我可以让 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。
您可以借助以下解决方案来完成此操作:
- EventBus - External Library -> 可用于在数据获取成功时通知,然后您可以调用片段。
- LiveData -> 您可以为该 Web 服务编写一个观察器,当观察器返回成功值时,您可以创建片段方法。
我有 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。
您可以借助以下解决方案来完成此操作:
- EventBus - External Library -> 可用于在数据获取成功时通知,然后您可以调用片段。
- LiveData -> 您可以为该 Web 服务编写一个观察器,当观察器返回成功值时,您可以创建片段方法。