我可以阅读的任何地方:到处使用FragmentDialog
,因为它可以独立于Activity
生命周期。但是,通常,对话框经常应该异步显示。但是,不鼓励从异步回调中提交FragmentManager
。怎么处理呢?
答案 0 :(得分:0)
一定要使用DialogFragment,因为正如您所提到的,它有助于保持您的活动与对话松散耦合。是的,有些情况下您可能需要异步显示对话。在这种情况下,您需要做的是将对话调用代码与主机组件上的方法调用一起包装,告诉您在此实例中显示对话是否安全。
如果您在活动中呼叫show,请将调用包装为 -
if(!isDestroyed() && !isFinishing())
如果您在片段中调用show,请将调用包装为 -
if (isResumed() && !isRemoving())
这或多或少会解决在不一致的UI状态下登陆的问题