Poo*_*oks 22 android overriding android-dialog
我有一个AlertDialog dlgDetails从另一个显示AlertDialog dlgMenu.如果用户按下dlgDetails中的后退按钮,我希望能够再次显示dlgMenu,如果他按下对话框,则只需退出对话框.
我认为最好的方法是覆盖onBackPresseddlgDetails,但我不知道如何做到这一点,因为必须使用Builder间接创建AlertDialogs.
我试图创建一个派生的AlertDialog(public class AlertDialogDetails extends AlertDialog { ...}),但我想我还必须AlertDialog.Builder在该类中扩展以返回一个AlertDialogDetails,但是有没有更简单的方法?如果没有,你会如何重写生成器?
Poo*_*oks 59
我终于在对话框中添加了一个关键监听器来监听Back键.不像重写那样优雅,onBackPressed()但它有效.这是代码:
dlgDetails = new AlertDialog.Builder(this)
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey (DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
dialog.cancel();
showDialog(DIALOG_MENU);
return true;
}
return false;
}
})
//(Rest of the .stuff ...)
Run Code Online (Sandbox Code Playgroud)
找到一个更短的解决方案:)试试这个
accountDialog = builder.create();
accountDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
dialog.dismiss();
activity.finish();
}
});
Run Code Online (Sandbox Code Playgroud)