我为此使用了 DialogFragment (onCreateDialog)
和 ViewModel。但是,当我尝试将 getViewLifecycleOwner()
传递给 LiveData::observe
方法时,出现以下错误:
java.lang.IllegalStateException: Can't access the Fragment View's LifecycleOwner when getView() is null i.e., before onCreateView() or after onDestroyView().
是否可以在 DialogFragment
中使用 getViewLifecycleOwner()
?
最佳答案
发生这种情况是因为 DialogFragment 的创建方式。
如果您使用 onCreateDialog()
,则此类 Fragment 的生命周期会略有不同。 onCreateView()
将不会被使用,因此该 Fragment 的 viewLifecycleOwner
将不会被初始化。
作为解决此问题的方法,您可以使用 Fragment 实例作为观察者的所有者:
.observe(this, Observer {...}
。尽管使用 this
而不是 viewLifecycleOwner
会收到警告。
关于android - DialogFragment 中的 getViewLifecycleOwner() 导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54766112/