2012-12-26 78 views
6

我有一個活動,當我按回按鈕,然後它不顯示警報對話框。 可能是什麼問題? 這裏是我的代碼活動onBackPress不顯示警報對話框

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(LogFish.this); 

       // set title 
       alertDialogBuilder.setTitle("Exit"); 
       alertDialogBuilder.setIcon(R.drawable.ic_action_search); 

       // set dialog message 
       alertDialogBuilder 
        .setMessage("This action will cause you to abandon all changes on current new fish log. \n\nAre you sure you want to exit?") 
        .setCancelable(false) 
        .setPositiveButton("YES",new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
          // if this button is clicked, close 
          startActivity(new Intent(LogFish.this,MainActivity.class)); 
          finish(); 

         } 
         }) 
        .setNegativeButton("NO",new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
          // if this button is clicked, just close 

          dialog.cancel(); 
         } 
        }); 

        // create alert dialog 
        AlertDialog alertDialog = alertDialogBuilder.create(); 

        // show it 
        alertDialog.show(); 

        } 
+0

請檢查你的背部鑰匙沒有的onkeydown捕獲().... –

+0

檢查,如果你不崩潰,因爲你的主線程上運行? – IamStalker

+2

事實上,它的調用,但立即你的活動完成,因爲你寫了'super.onBackPressed();'。如果你刪除這個,那麼你的活動沒有完成後面的按下並顯示你的對話框。 – user370305

回答

13

你必須刪除super.onBackPressed();

0
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    //Handle the back button 
    if(keyCode == KeyEvent.KEYCODE_BACK) { 
     //Ask the user if they want to quit 
     new AlertDialog.Builder(this) 
     .setIcon(android.R.drawable.ic_dialog_alert) 
     .setTitle(R.string.quit) 
     .setMessage(R.string.really_quit) 
     .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 

       //Stop the activity 
       YourClass.this.finish();  
      } 

     }) 
     .setNegativeButton(R.string.no, null) 
     .show(); 

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

} 
2
@Override 
public void onBackPressed() { 

    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Title"); 
    builder.setMessage("Your Message"); 
    builder.setIcon(android.R.drawable.ic_dialog_alert); 

    builder.setPositiveButton("YES", new OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 
      //implement your logic for YES 
     } 
    }); 

    builder.setNegativeButton("NO", new OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 
      //implement your logic for NO 
     } 
    }); 
    builder.setOnCancelListener(null); 
    builder.show(); 
}