【发布时间】:2015-07-16 13:38:21
【问题描述】:
我的 UI 包含内容部分和导航部分。内容部分包含一个工具栏、一个tablayout和一个viewpager。它看起来像
我的工作流程
当我单击 NavigationView 中的项目时,UI 通过调用以下“setUpTab”方法将 viewpager 中的片段替换为其他新片段。核心代码是:
public void setUpTab(int id){
adapter.clear();
switch (id){
case R.id.nav_home:
adapter.addFragment(new EventFragment(),"Events");
adapter.addFragment(new OwnRepoFragment(),"Repository");
adapter.addFragment(new ContributeRepoFragment(),"Contribute");
break;
case R.id.nav_friends:
adapter.addFragment(new FollowerFragment(),"Follower");
adapter.addFragment(new FollowingFragment(),"Following");
break;
case R.id.nav_gist:
break;
case R.id.nav_setting:
break;
case R.id.nav_about:
break;
}
adapter.notifyDataSetChanged();
tab.setupWithViewPager(viewpager);
}
static class Adapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
public Adapter(FragmentManager fm) {
super(fm);
}
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
public void clear(){
mFragments.clear();;
mFragmentTitles.clear();;
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
}
问题
我想在片段再次插入视图页面时加载数据(插入发生在我调用“adapter.addFragment()”时)。 我在生命周期方法中启动了数据加载线程。但是似乎并不总是调用生命周期方法(onCreate,onResume)。所以我没有机会启动数据加载线程。
如何在viewpager中替换fragment,让fragment通过正常的生命周期方法:onCreate,onCreateView,onResume?
【问题讨论】: