我设计了一个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里面

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐