【发布时间】:2020-06-06 23:32:27
【问题描述】:
所以我在我的应用程序的主要活动中使用导航,并且我有一个片段,它是我的开始导航片段。
在这个片段中,在它被创建之后,我在我的演示者中发布了一个线程来从网络中获取数据。 获取数据后,我正在使用主线程将数据显示到我的屏幕上。
应用程序第一次运行时,一切正常。
但是,如果用户打开抽屉并再次选择此片段而不是另一个片段,则片段将再次重新创建,这意味着它会像导航组件的设计那样从头开始销毁和创建。
然而这一次,当我的演示者发布线程 fetching-data-thread 并完成并将结果发送到 UI 时,fragment 的 isAdded() 方法返回 false 并且 getActivity 为 null。
拥有它,意味着我不能使用活动上下文(getActivity() 为 null 或 requireActivity() 引发非法状态异常),因此我无法加载图像等,因为我没有可用的上下文。
我强调,当用户在此片段可见时打开抽屉并再次选择以从抽屉导航到此片段时,会发生这种情况。如果用户导航到另一个片段,然后按下后退按钮,一切正常。
知道如何处理这个问题吗?
【问题讨论】:
标签: android android-fragments android-lifecycle fragmentmanager android-components