嗨我一直在努力通過單擊已打開的對話框上的按鈕來創建一個對話框。
第一個對話框的名稱= 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