我正在使用ActionBarActivity来创建5个选项卡。我已经使用ViewPager和扩展了FragmentPagerAdapter的SectionsPagerAdapter来在这5个选项卡之间进行滑动。每个选项卡都有一个带有asynctask的fragment,在oncreateView方法中调用。当我在一个fragment中时,其他fragment中的asynctask也会被调用。
我尝试在每个fragment的oncreateView方法中使用toast消息代替asynctask,但是错误的toast消息会在错误的fragment中触发。
onCreate方法代码:
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager_exp);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position)
{
actionBar.setSelectedNavigationItem(position);
actionBar.setTitle(getHomePageTitle(position));
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++)
{
// Create a tab with text corresponding to the page title defined by
// the adapter. Also specify this Activity object, which implements
// the TabListener interface, as the callback (listener) for when
// this tab is selected.
actionBar.addTab(actionBar.newTab()
.setIcon(getPagedrawable(i))
.setTabListener(this));
}
// 适配器类的代码:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position)
{
case 0:
Fragment1 f1 = new Fragment1();
return f1;
case 1:
Fragment2 f2 = new Fragment2();
return f2;
case 2:
Fragment3 f3 = new Fragment3();
return f3;
case 3:
Fragment4 f4 = new Fragment4();
return f4;
case 4:
Fragment5 f5 = new Fragment5();
return f5;
}
return null;
}
@Override
public int getCount() {
// Show 5 total pages.
return 5;
}
}
Fragment 类代码:
public class F1 extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.f1,container, false);
Toast.makeText(getActivity(), "F1", Toast.LENGTH_SHORT).show();
return view;
}
}
FragmentStatePagerAdapter
。当页面数量较多时,这个版本的分页器更加有用,更像一个列表视图。当页面对用户不可见时,它们的整个片段可能会被销毁,只保留该片段的保存状态。与FragmentPagerAdapter
相比,这使得分页器在保持每个访问页面关联的内存更少的情况下,可能需要更多的开销来切换页面。 - LordRaydenMK