所以我在我的应用程序的主要活动中使用导航,我有一个片段,它是我的开始导航片段。
在这个片段中,在它被创建之后,我在我的演示者中发布了一个线程来从网络中获取数据。获取数据后,我正在使用主线程将数据显示到我的屏幕上。
该应用程序第一次运行时,它运行良好。
但是,如果用户打开抽屉并再次选择这个片段而不是另一个片段,则片段将再次重新创建,这意味着它会像导航组件那样被销毁并从头开始创建。
然而这一次,当我的演示者发布线程获取数据线程并完成并将结果发送到 UI 时,片段的 isAdded() 方法返回 false 并且 getActivity 为空。
这样做意味着我不能使用 Activity 上下文(getActivity() 为 null 或 requireActivity() 抛出非法状态异常),因此我无法加载图像等,因为我没有可用的上下文。
我强调当用户在此片段可见时打开抽屉并再次选择以从抽屉导航到此片段时会发生这种情况。如果用户导航到另一个片段然后按下后退按钮一切正常。
知道如何处理这个问题吗?