大家好,需要知道使用选项卡中的异步布局活动的正确方法是什么。
在我的任务中,有一个包含两个选项卡的活动。
Tab1和Tab2
Tab1从服务器加载数据并显示数据。
Tab2还从服务器加载另一个数据,并在列表视图中显示数据。
im在tab1和tab2中使用异步任务,但问题是当活动启动时,两个异步任务类同时执行,从而导致错误。
我需要如何在第一个选项卡片段可见时快速使用它,然后运行第一个异步任务,在第二个片段可见时,逐个运行第二个异步任务。
您可以同时使用以下两种场景:
1) 您可以在活动中调用两个AsyncTasks
,并在两个选项卡中显示数据。
2) 根据问题
im在tab1和tab2中使用异步任务,但问题是当活动启动时,两个异步任务类同时执行会导致错误。
您应该在setUserVisibleHint()
方法中执行AsyncTask
,该方法将在您的片段完全可见时调用。
使用:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
// TODO Auto-generated method stub
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// execute your asynctask here
}
}
在我看来,您最好只使用一个异步任务从服务器获取数据,然后逐个使用选项卡处理
将OnTabSelectedListener
添加到TabLayout
// run asynctask 1 first and then
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab.getPosition() == 0)
// run asynctask 1
else // run asynctask2
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});