由于以下原因,我仍然遇到问题DialogFragment
用于我的主要活动。
我目前正在使用此代码来删除它:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
Fragment frag = getFragmentManager().findFragmentByTag("LockDialog");
if(frag != null) {
transaction.remove(frag);
transaction.commit();
}
问题是,由于对话框有重复项(意味着对话框有时没有正确删除),我仍然遇到崩溃。
所以我的问题是:这是删除 a 的正确方法吗?DialogFragment
或者只能用于Fragments
?
我必须使用dismiss()
一直以来的方法?:
Fragment lockFragment = getFragmentManager().findFragmentByTag("LockDialog");
//If the dialog already exist, we dismiss it
if(lockFragment != null && lockFragment instanceof LockDialogFragment) {
LockDialogFragment lockDialog = (LockDialogFragment) lockFragment;
lockDialog.dismiss();
}
这是目前我的一个应用程序中最大的错误,所以我想在选择其中一个之前确定一下。
Thanks!
EDIT:我刚刚意识到我当前的问题可能是由于提交可能会延迟,我将添加executePendingTransactions
看看情况是否会好转。
但它仍然带来了另一个问题,如果对话框已关闭,是否有必要调用 transaction.remove() ?正在使用dismiss()
比使用交易更简单、更安全?
DialogFragment.dismiss()
是正确的方法。来自文档:
关闭片段及其对话框。如果片段被添加到
返回堆栈,直到并包括此条目的所有返回堆栈状态都将
被弹出。否则,将提交一个新事务来删除
片段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)