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?

  • FAB的android.support.design.widget.FloatingActionButton的实现减小了图像的大小
  • button点击视觉状态改变
  • 在Android中将button状态设置为AnimationDrawable
  • Android - 模拟后退button
  • 与两种颜色和背景图像的button
  • 高级RecyclerView库 - 代码示例
  • 浮动的行动button和白色背景
  • 如何在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(); }