首先,是在按一下返回键的前提下:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { showDialog(); } return super.onKeyDown(keyCode, event); }退出是否保存?
public void showDialog() { Dialog dialog = new AlertDialog.Builder(InforInputActivity.this).setTitle("提示") .setMessage("您还没保存,确定要退出吗") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); finish(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); dialog.setCanceledOnTouchOutside(false); dialog.show(); }
贴个完整版的,外加有条目的dialog
public class MainActivity extends AppCompatActivity { private String[]vh={"小明家","小黑甲","小鹿家","小熊家","光头强家","小黑甲","小鹿家"}; EditText edt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edt= (EditText) findViewById(R.id.text1); edt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { select(); } }); } private void select() { Dialog dialog=new AlertDialog.Builder(this).setTitle("选择您的家") .setIcon(R.drawable.shouye) .setItems(vh, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { edt.setText(vh[which]); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create(); dialog.show(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0){ finishDialog(); } return super.onKeyDown(keyCode, event); } private void finishDialog() { Dialog d =new AlertDialog.Builder(this).setTitle("温馨提示") .setMessage("您确定要退出吗?") .setIcon(R.drawable.shouye) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); finish(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); d.show(); } }