如何延迟第二个片段直到第一个片段在 ViewPager 中加载数据?

How to delay second fragment until the first loads the data in ViewPager?

我有 2 个片段 pager.They 同时开始发出网络请求 time.I 想通过延迟第二个片段来加速第一个片段,直到第一个片段加载 data.How 可以我这样做吗?我在 java.

编码

编辑: 当两个片段加载数据时,与我仅使用第一个片段(测试时)发出网络请求时相比,完成加载第一个片段需要额外的 2 秒,因为视图寻呼机同时加载两个选项卡。

编辑2: 在以下位置发现了相同的问题:link 一个答案建议为第一个片段创建界面。

interface TabView {
fun prepareTab()
fun onTabOpened()
fun onTabClosed()
 }    

问题是我无法使用界面,因为我的第一个选项卡使用我在此处找到的示例中的根片段:link

Edit3:我在第二个片段中的网络请求:Implementation of network bound resource

快速修复:我在第二次使用 runnable 来延迟观察者的注册fragment.Im肯定有更好的解决方案,所以我不会接受这个。

final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
      registerLiveDataObservers();
        }
    }, 2000);  //delay for 2 seconds

我使用实时数据作为改造响应,因此它与 db+network 配合得很好

接口的替代方法是用于片段之间通信的共享视图模型(还有其他方法),例如参见 [​​=12=]。

然后你会在 Fragment1 的 LiveData 观察者的 onChanged 中的共享视图模型中设置一个标志,然后在 Fragment2 中观察共享视图模型中的这个标志并且不会 registerLiveDataObservers(); 直到正确的状态说 Fragment1 已加载它的数据(数据大小 > 0)