我可以让 Fragment 等待来自 Activity 的数据吗?
Posted
技术标签:
【中文标题】我可以让 Fragment 等待来自 Activity 的数据吗?【英文标题】:Can I make a Fragment wait for data from Activity? 【发布时间】:2020-12-27 00:51:57 【问题描述】:我有 2 个活动,LoginActivity 和 HomeActivity,其中有一个 Tablayout 和 ViewPager 2。有 3 个片段(FragmentA、FragmentB、FragmentC)类似于 HomeActivity 中的选项卡。
登录后,我在 HomeActivity 中从网络服务器获取一些数据。数据是我想在 Fragments 中使用的产品列表。
我的问题是我的 Fragments 是在 HomeActivity 获取数据并填充列表之前创建的,导致在我的 Fragments 中使用所述 productList 时出现 NPE。
我能做些什么来防止这种 NPE?是否可以让 Fragments 等到 homeActivity 填充 productList ?
当我使用 FragmentA 中的按钮获取 productList 时,一切都按预期工作。但我想改为获取 FragmentA 的产品列表 onCreateView,这会导致 NPE。
【问题讨论】:
【参考方案1】:您可以借助以下解决方案来做到这一点:
-
EventBus - 外部库 -> 可以用来在数据获取成功时进行通知,之后您可以调用片段。
LiveData -> 您可以为该 Web 服务编写一个观察者,当观察者返回成功值时,您可以创建片段方法。
【讨论】:
感谢您的帮助。我研究了您的建议,并认为它们都适用于我的情况。我接受答案。虽然我最终重建了我的 API 并使用全局变量将数据存储在 appstart 上以上是关于我可以让 Fragment 等待来自 Activity 的数据吗?的主要内容,如果未能解决你的问题,请参考以下文章