【发布时间】:2016-12-28 03:45:24
【问题描述】:
我有一个使用 viewpager 的屏幕,其中包含两个片段 A 和 B,片段中的数据是使用异步任务加载的。我的 MainActivity 类在 onCreate 方法中包含以下代码:
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
pager = (ViewPager) findViewById(R.id.pager);
adapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
tabLayout.setupWithViewPager(pager);
//Async task to get data from server and update the fragments
runGetDataTask(true);
/**
* Adapter class for View pager
*/
public class MyPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = {"A",
"B"};
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
iFragment = A.getInstance();
if (Utility.IS_DEBUG)
Log.i(LOG_TAG,"A fragment created");
return iFragment;
case 1:
dFragment = B.getInstance();
if (Utility.IS_DEBUG)
Log.i(LOG_TAG,"B fragment created");
return dFragment;
}
return null;
}
}
问题在于,有时异步任务在片段初始化之前完成执行,当它尝试访问 iFragment 和 dFragment 以更新其从服务器获得的数据时,我得到了 nullpointerexception,因为片段尚未初始化。
但这有时会发生,我不知道我在这里做错了什么。有人可以帮我解决这个问题吗?
谢谢
【问题讨论】:
标签: android android-fragments android-asynctask