2012-06-06 81 views

回答

8

試試這個:

private boolean doubleBackToExitPressedOnce = false; 

@Override 
protected void onResume() { 
    super.onResume(); 
    // .... other stuff in my onResume .... 
    this.doubleBackToExitPressedOnce = false; 
} 

@Override 
public void onBackPressed() { 
    if (doubleBackToExitPressedOnce) { 
     super.onBackPressed(); 
     return; 
    } 
    this.doubleBackToExitPressedOnce = true; 
    Toast.makeText(this, "Press twice to exit", Toast.LENGTH_SHORT).show(); 

} 

這個片段也手柄時activityis恢復

0

你可以做你有一個全球性的整數,只是問什麼復位狀態算上它,如果> 2,退出。

但是你可能需要一個更好的(IMO)的方式,在那裏你問題的用戶,如果他們想退出或不:

private void questionQuit(){ 
    final CharSequence[] items = {"Yes, quit now", "No, cancel and go back"}; 

    builder = new AlertDialog.Builder(mContext); 
    builder.setCancelable(false); 
    builder.setTitle("Are you sure you want to quit?"); 
    builder.setItems(items, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 
      switch(item){ 
      case 0: 
       quit(); 
       break; 
      case 1: 
      default: 
       break; 
      } 
     } 
    }).show(); 
    AlertDialog alert = builder.create(); 

} 
0
@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (event.getAction() == KeyEvent.ACTION_DOWN) { 
      switch (keyCode) { 
      case KeyEvent.KEYCODE_BACK : 
       int i = 0 ; 
        if(i == 1) 
         { 
         finish(); 
         } 
        i++; 

       return true; 
      } 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
2

我看這個問題是有點老,但我雖然這可能有助於一些人尋找替代已經給出的答案。

這是我如何處理退出我的應用程序。如果有人有更好的或谷歌建議的方法來完成這一點,我想知道。

編輯 - 忘記提及這是Android 2.0及更高版本。對於以前的版本,請覆蓋onKeyDown(int keyCode, KeyEvent event)並檢查keyCode == KeyEvent.KEYCODE_BACKHere是檢出的好鏈接。

private boolean mIsBackEligible = false; 

@Override 
public void onBackPressed() { 

    if (mIsBackEligible) { 

     super.onBackPressed(); 

    } else { 

     mIsBackEligible = true; 
     new Runnable() { 
      // Spin up new runnable to reset the mIsBackEnabled var after 3 seconds 
      @Override 
      public void run() { 
       CountDownTimer cdt = new CountDownTimer(3000, 3000) { 
        @Override 
        public void onTick(long millisUntilFinished) { 
         // I don't want to do anything onTick 
        } 

        @Override 
        public void onFinish() { 
         mIsBackEligible = false; 
        } 
       }.start(); 
      } 
     }.run(); // End Runnable() 

     Toast.makeText(this.getApplicationContext(), 
       "Press back once more to exit", Toast.LENGTH_SHORT).show(); 

    } 

} 
相關問題