6

我有一个活动,当我按下返回按钮时,它没有显示警报对话框。可能是什么问题呢?这是我的代码

@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();

                    }
4

3 回答 3

13

你必须删除 super.onBackPressed();

于 2012-12-26T13:14:23.817 回答
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();
}
于 2012-12-26T15:46:20.030 回答
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);
    }

}
于 2012-12-26T13:27:31.147 回答