2010-08-17 6 views
10

내 앱이 몇 가지 활동을 연결합니다.뒤로 버튼과 마지막 활동

다시 버튼을 누르면 이전 활동으로 돌아가 갑자기 응용 프로그램을 종료합니다!

그래서 나는

내가 뒤로 버튼을 재정의하는 방법을 알고 스택의 마지막 활동 인 경우에 "당신이 정말로 종료 하시겠습니까"와 같은 메시지를 표시해야하지만 난 얼마나 많은 알고하는 방법을 알아낼 수 없습니다 활동 도와주세요에게 역사

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // Is it the last activity on stack ? 
     // so show confirm dialog 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

에 있습니다.

+0

응용 프로그램에 이것이 루트라고 가정 할 수있는 루트 수준의 주요 활동이 없습니까? – iandisme

+6

부수적으로 - 뒤로 버튼으로 종료하려고 할 때 버그가있는 앱을 제거합니다. 이것은 데스크톱 응용 프로그램이 아닌 전화 응용 프로그램입니다. – EboMike

+0

나는 EboMike에 동의합니다. 뒤로 버튼을 납치하는 것은 좋은 생각이 아닙니다. – Falmarri

답변

14

() 함수 마무리를 사용하여

public void finish() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("do you really want to exit?"); 
     builder.setCancelable(false); 
     builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       quit(); 
      } 
     }); 
     builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

    public void quit() { 
     super.finish(); 
    }; 
0

당신은 history.You 다시 버튼을 때이 onBackPressed()의 방법을 way.Invoke 할 수에서 얼마나 많은 활동을 확인할 필요가 없습니다 달성 할 수 그 다음에는 확인 대화 상자를 표시하기 위해 주 활동에서 finish() 메소드를 재정의하십시오. onBackPressed() 메소드가 활동의 finish() 메소드를 호출하기 때문에 주 활동으로 돌아가서 재정의 finish() 메소드가 호출되면 당신이 오버라이드 한 대화 상자.

관련 문제