프로그래밍 방식으로 Android에서 뒤로 버튼을 누르는 방법은 무엇입니까?


78

내 앱에는 로그 아웃 기능이 있습니다. 사용자가 로그 아웃을 클릭하면 홈 화면으로 이동합니다. 이제 뒤로 버튼을 눌러 앱을 종료합니다. 하지만 내가 원하는 것은 뒤로 버튼 기능과 마찬가지로 자동으로 (예 : 프로그래밍 방식으로) 종료해야한다는 것입니다. finish ()를 호출하면 기능이 수행된다는 것을 알고 있습니다. 그러나 문제는 이전 활동으로 이동한다는 것입니다.


뒤로 버튼을 눌러도 이전 활동이 표시됩니다 ...
Tarun

8
finish (); 사용하십시오.
VJ

1
@Tarun이 코드를 사용하여 모든 기록을 지우고 있습니다. ExitActivity.this.finish (); Intent intent1 = new Intent (ExitActivity.this, PinActivity.class); intent1.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity (intent1);
vinothp

@ user1216003 당신은 올바른 길에 있습니다. 의도에 플래그를 설정하는 뒤로 버튼과 동일하게 수행합니다.
VJ

답변:


121

onBackPressed()지원되는 이유 : API 레벨 5

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        onBackPressed();
    }
}

@Override
public void onBackPressed() {
    //this is only needed if you have specific things
    //that you want to do when the user presses the back button.
    /* your specific things...*/
    super.onBackPressed();   
}

3
이것의 요점은 무엇입니까? Android가 기본적으로 수행하는 작업을 작성하고 있습니다. 뒤로 버튼을 누르면 onBackPressed ()를 호출합니다 .... 맞나요?
drulabs

3
@KKD 5 ​​이하의 API를 지원해야한다면 위와 같이 사용해야합니다. android-developers.blogspot.co.uk/2009/12/…
Tarun

1
그렇다면 onBackPressed는 갈 수 있습니다 ... onBackPressed () 내에서 ExitIntent를 시작하십시오.
Tarun

1
댓글 주셔서 감사합니다. 저는 뒤로 버튼을 사용하고 있지 않습니다. 저는 로그 아웃 버튼을 사용하고 있습니다. 사용자가 클릭하면 예 또는 아니오를 묻는 대화 상자가 채워집니다. 예인 경우 자동으로 종료해야하는 홈 화면으로 이동하지만 거기에 갇혀 있습니다. ... 내 앱에서 알람 기능을 사용하고 있기 때문에 필요합니다. 알람이 팝업 될 때마다 홈 화면이 배경으로 오는 메시지를 표시합니다 .. 그래서 내가 시도하고있는 것을 제거해야합니다 ...
vinothp

충돌에서와 같이 일부 태블릿에서 onBackPressed ()에 문제가 있습니다.
Demonick

42

재정의 할 필요가 없습니다 onBackPressed(). 사용자가 뒤로 버튼을 눌렀을 때 활동이 기본적으로 수행 할 작업으로 이미 정의되어 있습니다. 따라서 onBackPressed()뒤로 버튼을 "프로그래밍 방식으로 누르"고 싶을 때마다 전화 하면됩니다.

finish()그래도 호출되는 결과 만;)

뒤로 버튼이하는 일이 헷갈리는 것 같아요. 기본적으로에 대한 호출 finish()이므로 현재 활동을 종료합니다. 해당 활동 뒤에 무언가가 있으면 해당 화면이 표시됩니다.

할 수있는 것은 로그인에서 활동을 시작할 때 CLEAR_TOP 플래그를 추가하여 종료 할 때 로그인 활동이 존재하지 않도록하는 것입니다.


안녕하세요, 답변 해 주셔서 감사합니다 .. 괜찮은 것 같지만 다시 시도해 보았습니다. 동일한 로그인 화면이 나타납니다.이 문제를 해결해 주시겠습니까?
vinothp

1
이것은 정답이지만 항상 "finish () 호출"이 아니기 때문에 편집해야합니다. 제 경우에는 (내가 의도 한대로 정확하게 작동합니다) 조각 스택을 통해 뒤로 이동하는 방법이며 해당 스택의 첫 번째 항목에 도달 할 때까지 finish ()를 호출하지 않습니다.
Yevgeny Simkin 2015 년

9

때로 onBackPressed () 메서드를 재정의하는 데 유용합니다. 조각으로 작업하고 뒤로 단추를 누르면 조각을 변경하는 경우 이전 조각으로 돌아 가기 때문입니다.


1
이것은 정확하고 더 많은 찬성 할 가치가 있습니다.
Yevgeny Simkin 2015 년

5

onBackPressed활동에서 재정의 한 후 호출 하십시오.


2
댓글 주셔서 감사합니다 .. OnBackPressed 뒤로 버튼을 눌렀을 때 코드를 삽입 할 수 있습니다 .. 내가 원하는 것은 뒤로 버튼을 자동으로 호출하고 싶은 것입니다 ... 나는 분명합니다
vinothp

한 가지만 수행하십시오. 전화를 걸고 싶을 때마다이 함수를 호출하면됩니다. 플래그 또는 원하는 이벤트를 기반으로 onCreate 내에서 호출 할 수 있습니다.
drulabs

1

간단히 onBackPressed ();

또는 조각을 사용하는 경우 getActivity (). onBackPressed ()를 사용할 수 있습니다.


0

간단히 finish (); 첫 수업에서 '(로그인 활동) onPause (); 방법. 그게 다야

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.