关于Fragment生命周期中调用getViewLifecycleOwner的坑
·
我设计了一个view,由于其需要依赖于一个LiveData的更新,更新后又可能会设计到延迟,所以设计了一个Runnable,在其内部做了延迟。
本来呢,使用上没有问题,但是有一次在一个新设备上没关自动旋转,手一滑旋转,然后直接闪退到姥姥家。直接来了个这样的爆红:
java.lang.IllegalStateException: Can't access the Fragment View's LifecycleOwner when getView() is null i.e., before onCreateView() or after onDestroyView()
这是为什么呢,溯源下来发现是我这个代码在onCreateView里面,但这里面获取getViewLifecycleOwner对象的时候由于旋转,view已经被销毁,所以导致获取不到。
这告诉我们一个道理:
要先检查getViewLifecycleOwner获取到的LifecycleOwner对象
但是呐,这样子还是不大妥当,因为:正常来说,对view的操作应该在onViewCreated里面,而不是onCreateView里面
更多推荐


所有评论(0)