我可以让 Fragment 等待来自 Activity 的数据吗?

Can I make a Fragment wait for data from Activity?

我有 2 个 Activity,LoginActivity 和 HomeActivity,它有一个 Tablayout 和 ViewPager 2。有 3 个片段(FragmentA、FragmentB、FragmentC)类似于 HomeActivity 中的选项卡。

登录后,我正在 HomeActivity 中从网络服务器获取一些数据。数据是我想在我的片段中使用的产品列表。

我的问题是我的片段是在 HomeActivity 可以获取数据并填充列表之前创建的,导致在我的片段中使用所述 productList 时出现 NPE。

我能做些什么来防止 NPE?是否可以让片段等到 productList 被 HomeActivity 填充?

当我使用 FragmentA 中的按钮获取 productList 时,一切正常。但我想改为获取 FragmentA 的 productlist onCreateView,这会立即导致 NPE。

您可以借助以下解决方案来完成此操作:

  1. EventBus - External Library -> 可用于在数据获取成功时通知,然后您可以调用片段。
  2. LiveData -> 您可以为该 Web 服务编写一个观察器,当观察器返回成功值时,您可以创建片段方法。