android - DialogFragment 中的 getViewLifecycleOwner() 导致崩溃

标签 android viewmodel dialogfragment android-livedata

我为此使用了 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/

相关文章:

android - 闪光手电筒功能无法通过 Nexus 5 中的应用程序小部件运行

android - 什么是 IMAGEWTY 固件格式?

java - Dialog Fragment 在 MainActivity 中实现后抛出空指针异常

java - 传递值

java - 如何异步验证 Nymi band?

android - 在android项目中使用外部库的优缺点

c# MVVM ViewModel 数据在每次访问 View 时都会重置

c# - 在 View 模型中创建控件实例

c# - 将继承模型转换为 View 模型

android - TimePicker 分钟间隔