如何在BottomSheetDialogFragment中使用getViewLifecycleOwner()

时间:2019-04-19 05:28:54

标签: android android-dialogfragment android-livedata

我的自定义片段扩展了BottomSheetDialogFragment。我有ViewModel,并且观察到一些LiveData对象。我想在观察者中使用getViewLifecycleOwner()。但是它与此日志一起崩溃:

java.lang.IllegalStateException: Can't access the Fragment View's LifecycleOwner when getView() is null i.e., before onCreateView() or after onDestroyView()

BottomSheetDialog使用onCreateDialog(),因此不会调用onViewCreated()。让我的观察者进入onActivityCreated()并不能解决此崩溃问题。

1 个答案:

答案 0 :(得分:0)

如果无法将代码放入onActivityCreated()中,请尝试使用getViewLifecycleOwnerLiveData()并观察其上的LifecycleOwner


并非完全符合您的要求,但是如果您只想要片段的LifeCycle,我相信您可以通过以下方式获得它:

 @NonNull
 @Override
 public Lifecycle getLifecycle() {
     return super.getLifecycle();
 }