Way*_*yne 7 android android-dialogfragment dialogfragment
我需要在FragmentActivity的onStop()中解除DialogFragment,如果它正在显示,这就是我做的
if(mAlertDlg != null && mAlertDlg.getDialog() != null)
mAlertDlg.dismiss();
Run Code Online (Sandbox Code Playgroud)
但我通常得到IllegalStateException.那么请告诉我为什么代码错了,在onStop()中解除DialogFragment的正确方法是什么?谢谢.
Nic*_*lle 18
你应该用dialogFragment.dismissAllowingStateLoss().正如文档所述commitAllowingStateLoss():
"就像commit()一样,但允许在保存活动状态后执行提交.这很危险,因为如果活动需要稍后从状态恢复,则提交可能会丢失,所以这只应用于它的情况UI状态可以在用户上意外更改."
所以对于dismissAllowingStateLoss()同样的方法.
如果你想解雇DialogFragmentin onStop(),你可能不想使用DialogFragment但是经典Dialog而不是.
DialogFragment存在的原因是允许在重新创建活动时自动恢复对话框.如果你将其解雇onStop(),它将永远无法恢复.
此外,如果您使用dismissAllowingStateLoss(),则可能无法正确记录解雇事务onSaveInstanceState()(如名称所示,可能会发生状态丢失),这将导致在重新创建活动时恢复对话,显然这不是什么你要.
| 归档时间: |
|
| 查看次数: |
9971 次 |
| 最近记录: |