我该如何覆盖Dialog
的onBackPressed
关闭对话框,并在Activity
上调用finish()
它位于?覆盖对话框onBackPressed()?
24
A
回答
50
您可以使用setOnCancelListener
:
dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
MyActivity.this.finish();
}
});
您需要完成只有你的活动。对话框将被自动解除。
22
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog.cancel();
return true;
}
return false;
}
})
2
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
return new Dialog(getActivity(), getTheme()){
@Override
public void onBackPressed(){
// dismiss();
// activityReference.finish();
}
};
}
0
在我的情况
我使用DialogFragment,这仍然是一个对话框.. 所以我在对话框中重写onCancel()
,它的反应就像活动的onBackPressed()
每次我点击后退按钮时,对话框所示。
@Override
public void onCancel(DialogInterface dialog)
{
super.onCancel(dialog);
Log.i("RecDialog.onCancel()", "onCancel");
}
希望我帮了忙。
0
我最后在我的对话框中添加了一个按键监听器来收听后退键。 不如覆盖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 ...)
相关问题
- 1. 覆盖对话框的OnBackPressed
- 2. Android覆盖onBackPressed()
- 3. onBackPressed()覆盖
- 4. 覆盖覆盖JQuery UI 1.8.2对话框
- 5. jQuery UI对话框覆盖
- 6. LWUIT:覆盖对话框
- 7. 覆盖startResolutionForResult的对话框
- 8. 无法覆盖onBackPressed onKeyDown - Android
- 9. 覆盖onBackPressed()不起作用
- 10. 覆盖对话框 - 对齐视图
- 11. 打开覆盖父对话框维度的子对话框
- 12. 覆盖jQuery对话框方法
- 13. 覆盖单个YUI对话框样式
- 14. 对话框全部用黑色覆盖
- 15. 覆盖JQuery对话框中的CheckBox
- 16. 如何覆盖Internet Explorer对话框?
- 17. 覆盖对话框解雇()与新AlphaAnimation
- 18. 对话框覆盖层不起作用
- 19. Android覆盖默认对话框主题
- 20. modal对话框或div覆盖frameset?
- 21. 设置对话框覆盖Jquery
- 22. jquery ui对话框覆盖未显示
- 23. 带覆盖背景的jquery对话框
- 24. jQuery UI模式对话框覆盖
- 25. 如何覆盖PackageInstaller对话框?
- 26. 擅长覆盖对话框关闭
- 27. JQuery通过对话框覆盖
- 28. Android的覆盖除对话框
- 29. Primefaces - AjaxStatus - 对话是覆盖
- 30. 引导模式对话框可以覆盖另一个对话框吗?
+1指着我在正确的方向,我一直在寻找的效果是onDismissListener但足够接近:-) – Skizit 2011-06-01 17:16:04
onDismissListener覆盖正面和负面的按钮了。所以如果你想重写压缩和点击对话外的任何地方,onCancelListener更好。 – thinzar00 2017-07-28 07:11:38