android - 如何延迟第二个片段,直到第一个在 ViewPager 中加载数据?
问题描述
我在视图寻呼机中有 2 个片段。它们都开始同时发出网络请求。我想通过延迟第二个片段来加速第一个片段,直到第一个片段加载数据。我该怎么做?我在java中编码。
编辑:当两个片段加载数据时,与我仅使用第一个片段(测试时)发出网络请求时相比,完成加载第一个片段需要额外的 2 秒,因为视图寻呼机同时加载两个选项卡。
Edit2:在以下位置找到相同的问题:链接 一个答案建议为第一个片段创建界面。
interface TabView {
fun prepareTab()
fun onTabOpened()
fun onTabClosed()
}
问题是我不能使用接口,因为我的第一个选项卡使用了我在这里找到的示例中的根片段: link
Edit3:我在第二个片段中的网络请求:网络绑定资源的实现
解决方案
接口的替代方案是用于在片段之间进行通信的共享视图模型(还有其他方法),例如参见androidwave.com/fragment-communication-using-viewmodel 。
然后你会在onChanged
Fragment1 的 LiveData 观察者的共享视图模型中设置一个标志,然后在 Fragment2 中观察共享视图模型中的这个标志,registerLiveDataObservers();
直到处于正确状态才能说 Fragment1 已加载它的数据(数据有大小> 0 )
推荐阅读
- html - ejs中的for循环
- laravel - Heroku 中的 Vue + Laravel
- tfs - TFS 2017 deploying to target machine: Agent running under highly privileged account Vs. custom environment variables to store user/pass
- javascript - Blob URL 是否可以被视为防止用户从开发人员控制台内复制图像的解决方案?
- python-3.x - 在 Facebook BlenderBot 聊天机器人中训练和测试自定义数据集
- python - 如何在 Python 中使用多个键修改嵌套字典中的一组特定值?
- python - 带有数据库值的 WTForm SelectField
- mongodb - 使用 Logstash JDBC 插件同步 MongoDB 和 Elasticsearch 时避免重复
- sql - 使用 group by 在 SQL 中查找具有特定列值的列的总和
- python - 无法使用 Watson Assistant 获取 workspace_id