gpt4 book ai didi

android - 使用 DialogFragment 时如何连接到后退事件?

转载 作者:行者123 更新时间:2023-11-29 20:58:00 24 4
gpt4 key购买 nike

我想知道在我的应用显示 DialogFragment 时用户何时按下后退按钮。 仅当没有 DialogFragment 时才调用 Activity.onBackPressed()。 当 DialogFragment 打开时,按返回键关闭对话框但不调用 onBackPressed()。我需要挂接到此事件,因为我需要关闭对话框和 Activity 。

连接到 DialogFragment.onDismiss() 还不够好,因为无论对话框如何关闭,它都会被调用。我只想在用户按下返回时关闭 Activity。

提前致谢...

最佳答案

您可以将关键监听器附加到 DialogFragment 用来显示其内容的 Dialog。要访问对话框,请覆盖 DialogFragment 中的 onCreateDialog:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
new Handler().post(new Runnable() {
@Override
public void run() {
getActivity().finish();
}
});
}
return false;
}
});
return dialog;
}

我不确定您是否需要将完成调用包装在 Runnable 中。在对话有机会被取消之前完成 Activity 似乎有点冒险。通过发布 Runnable,您允许 key 正常处理,让 Android 关闭对话框,然后您发布的 Runnable 也将运行以完成 Activity 。

关于android - 使用 DialogFragment 时如何连接到后退事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27051891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com