嗨我一直在努力通过单击已打开的对话框上的按钮来创建一个对话框。
第一个对话框的名称= dialog_main
第二个对话框的名称= dialog_edit
首先,我打开dialog_main。它上面有一个按钮,打开dialog_edit。
当我在dialog_edit之外单击时,它会返回到dialog_main,这就是它应该做的事情。
但是,当我点击后退按钮时,它会关闭对话并返回到主要活动。
如何在点击后退按钮时仅关闭活动对话框,而不是背后的对话框?
我只想让dialog_edit的后退按钮事件返回到dialog_main。请参阅代码。
final Dialog dialog_main = new Dialog(ViewTask.this);
dialog_main.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog_main.setContentView(R.layout.dialog_main);
dialog_main.setCanceledOnTouchOutside(true);
dialog_main.setCancelable(true);
dialog_main.show();
//button is a button displayed on dialog_main
button_edit_details.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog_edit = new Dialog(ViewTask.this);
dialog_edit.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog_edit.setContentView(R.layout.dialog_edit_details);
dialog_edit.setCancelable(true);
dialog_edit.setCanceledOnTouchOutside(true);
dialog_edit.show();
dialog_edit.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
//do the operations
dialog_edit.dismiss();
});
dialog_edit.setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//do same operations
dialog_edit.dismiss();
});
}
}); //end of button onclicklistener
dialog_main.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog_main) {
//Data is displayed from operations in dialog_edit
dialog_main.dismiss();
}
});
dialog_main.setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog_main, int keyCode2, KeyEvent event2) {
if (keyCode2 == KeyEvent.KEYCODE_BACK) {
//Data is displayed from operations in dialog_edit
dialog_main.dismiss();
}
return true;
}
});
}
有可能是在代码中犯了一些错误,但我希望你得到的我在做什么的想法。我已经尝试了在其他地方放置“dialog_main.dissmiss()”的几个组合,但问题依然如此。
是的,你的建议很有帮助。我设置了属性dialog_main.setCancelable(false);同时首先声明它,然后在解除dialog_edit时将其更改为true。 – vin 2015-02-11 09:06:04
@victor如果您可以将其标记为正确的答案,它也可以帮助面临类似问题的人。谢谢。 – 2015-02-11 09:07:20
@victor btw如果你声明你的主对话框在声明时是不可取消的,即在显示编辑对话框之前,如果编辑诊断没有显示,后退按钮不能在主诊断上工作,并且只有在编辑之后才会开始工作对话框显示并解除。在上面的解决方案中,后退按钮的行为始终保持一致。 – 2015-02-11 12:13:56