我可以让 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 的数据吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android Fragment★★

Fragment 工具类

Fragment 工具类

Fragment与Activity简单使用,包括二者之间的关联与生命周期

Fragment基础----生命周期

自定义控件实现-今日头条图集效果