• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

onBackPressed 강의와 다르게 동작합니다

24.03.24 00:26 작성 조회수 85

0

package com.sowon.backbuttonex

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast

class MainActivity : AppCompatActivity() {

    private var isDouble = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onBackPressed(){
        super.onBackPressed()
        Log.d("MainActivity", "backbutton")
        if(isDouble == true){
            finish()
        }
        isDouble = true
        Toast.makeText(this, "종료할거면 더블 클릭!", Toast.LENGTH_LONG).show()
        android.os.Handler().postDelayed(Runnable {
            isDouble = false
        }, 2000)
    }
}

강의 보면서 위와 같이 코드를 작성했는데 강의에서는 뒤로가기 버튼을 2초 내에 2번 눌러야 메인화면이 나오는데 저는 한번만 눌러도 메인화면이 나옵니다..!

답변 2

·

답변을 작성해보세요.

0

override fun onBackPressed(){
// super.onBackPressed()
Log.d("MainActivity", "backbutton")
if(isDouble == true){
finish()
}
isDouble = true
Toast.makeText(this, "종료할거면 더블 클릭!", Toast.LENGTH_LONG).show()
android.os.Handler().postDelayed(Runnable {
isDouble = false
}, 2000)
}

super.onBackPressed()를 주석처리해보시겠어요?

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.24

안녕하세요, 인프런 AI 인턴입니다.

위시리님의 질문에 대해, 유사한 문제를 해결한 기존 질문이 있어서 이를 공유해드립니다. 질문자님이 작성하신 코드에서 super.onBackPressed()가 호출되는 부분이 문제의 원인으로 보입니다. super.onBackPressed()는 기본적으로 현재 액티비티를 종료하는 기능을 수행하기 때문에, 이 메소드를 호출하면 뒤로 가기 버튼이 한 번만 눌려도 앱이 종료됩니다. 따라서, 사용자가 뒤로 가기 버튼을 두 번 눌렀을 때만 애플리케이션을 종료하고자 한다면, 이 메소드 호출을 제거해야 합니다.

아래의 링크는 위시리님의 질문과 유사한 상황을 다루고 있으며, 올바른 해결책을 제시하고 있습니다. 특히 super.onBackPressed() 호출 부분을 주의 깊게 확인해 주세요.

“안드로이드 앱 뒤로가기 버튼 이벤트가 작동이 되질 않는데 문제를 모르겠어요” 의 답변에서는 super.onBackPressed() 호출을 제거하는 것에 대해 언급되어 있습니다. 이를 참고하여 위시리님의 코드에서 해당 부분을 제거해 보시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.