android按下后退button后如何放置一个对话框

我想通过点击后退button,它会显示一个由TextViews和一个名为exit的button组成的对话框。 点击退出button后,它应该从我的应用程序出来

我喜欢这个,

@Override public void onBackPressed() { System.out.println("hiiii"); final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.dialog); Button exitButton = (Button) dialog.findViewById(R.id.exit); System.out.println("inside dialog_started"); exitButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { MainActivity.this.finish(); dialog.dismiss(); } }); return; } 

在日志猫hiiiii和“inside dialog_started”打印,但对话框不来。 我怎样才能得到对话框上点击后退button?

Solutions Collecting From Web of "android按下后退button后如何放置一个对话框"

  public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exitByBackKey(); //moveTaskToBack(false); return true; } return super.onKeyDown(keyCode, event); } protected void exitByBackKey() { AlertDialog alertbox = new AlertDialog.Builder(this) .setMessage("Do you want to exit application?") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { // do something when the button is clicked public void onClick(DialogInterface arg0, int arg1) { finish(); //close(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { // do something when the button is clicked public void onClick(DialogInterface arg0, int arg1) { } }) .show(); } 

这是一个更简单的解决scheme:

 @Override public void onBackPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Save Or Not"); builder.setMessage("Do you want to save this? "); builder.setPositiveButton("Save", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { saveResult(); MyActivity.super.onBackPressed(); } }); builder.setNegativeButton("Discard", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MyActivity.super.onBackPressed(); } }); builder.show(); } 
  @Override public void onBackPressed() { // TODO Auto-generated method stub AlertDialog.Builder builder=new AlertDialog.Builder(mContext); // builder.setCancelable(false); builder.setTitle("Rate Us if u like this"); builder.setMessage("Do you want to Exit?"); builder.setPositiveButton("yes",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(mContext, "Yes i wanna exit", Toast.LENGTH_LONG).show(); finish(); } }); builder.setNegativeButton("No",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(mContext, "i wanna stay on this page", Toast.LENGTH_LONG).show(); dialog.cancel(); } }); builder.setNeutralButton("Rate",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName()))); } catch (android.content.ActivityNotFoundException anfe) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + getPackageName()))); } } }); AlertDialog alert=builder.create(); alert.show(); //super.onBackPressed(); } 
  @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode != KeyEvent.KEYCODE_BACK) return super.onKeyDown(keyCode, event); DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which){ case DialogInterface.BUTTON_POSITIVE: //Yes button clicked finish(); break; case DialogInterface.BUTTON_NEGATIVE: //No button clicked break; } } }; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener) .setNegativeButton("No", dialogClickListener).show(); return super.onKeyDown(keyCode, event); } 

尝试这个…

  public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { AlertDialog alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("Exit Alert"); alertDialog.setIcon(R.drawable.appicon); alertDialog.setMessage("Do you really want to exit the Game?"); alertDialog.setButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); return; } }); alertDialog.setButton2("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); return; }}); alertDialog.show(); return true; } return super.onKeyDown(keyCode, event); } 

这里是另一个显示退出信息的代码:

 public void onBackPressed() { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( Menu.this); // set title alertDialogBuilder.setTitle("Exit"); // set dialog message alertDialogBuilder .setMessage("Do you really want to exit?") .setCancelable(false) .setPositiveButton("Yes",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, close // current activity Menu.this.finish(); } }) .setNegativeButton("No",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, just close // the dialog box and do nothing dialog.cancel(); } }); // create alert dialog AlertDialog alertDialog = alertDialogBuilder.create(); // show it alertDialog.show(); } 
 its working exactly.... public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exitByBackKey(); //moveTaskToBack(false); return true; } return super.onKeyDown(keyCode, event); } protected void exitByBackKey() { AlertDialog alertbox = new AlertDialog.Builder(this) .setMessage("Do you want to exit application?") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { // do something when the button is clicked public void onClick(DialogInterface arg0, int arg1) { finish(); //close(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { // do something when the button is clicked public void onClick(DialogInterface arg0, int arg1) { } }) .show(); }