我仍然因在我的主活动上使用了一个 DialogFragment 而遇到问题。
我目前正在使用以下代码来移除它:
问题在于,由于对话框未被正确移除,有时会出现重复的对话框导致崩溃。
所以我的问题是:是否正确的方法是移除
我是否必须始终使用
我目前正在使用以下代码来移除它:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
Fragment frag = getFragmentManager().findFragmentByTag("LockDialog");
if(frag != null) {
transaction.remove(frag);
transaction.commit();
}
问题在于,由于对话框未被正确移除,有时会出现重复的对话框导致崩溃。
所以我的问题是:是否正确的方法是移除
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();
}
这是我目前在一个应用程序中遇到的最大bug,所以在选择其中一个之前我想要确定。
谢谢!
编辑:我刚意识到我的当前问题可能是由于提交可以被延迟导致的,我将添加executePendingTransactions
来查看是否有任何改善。
但仍然有另一个问题,如果对话框已被关闭,是否需要调用transaction.remove()
?使用dismiss()
比使用事务更直观和安全吗?