gpt4 book ai didi

android - 单击NavigationView项时如何更改tablayout下的viewpager?

转载 作者:行者123 更新时间:2023-11-29 17:33:59 24 4
gpt4 key购买 nike

我的用户界面包含内容部分和导航部分。内容部分包含一个工具栏,一个tablayout和一个viewpager。它看起来像

The body content is a tablayout wrap a viewpager The NavigationView with Items

我的工作流程

当我单击 NavigationView 中的项目时,UI 通过调用以下“setUpTab”方法将 viewpager 中的 fragment 替换为其他新 fragment 。核心代码是:

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);
}
}

问题

我想在 fragment 再次插入 viewpager 时加载数据(插入发生在我调用“adapter.addFragment()”时)。我在生命周期方法中启动了数据加载线程。但是生命周期方法(onCreate,onResume)似乎并不总是被调用。所以我没有机会启动数据加载线程。

如何替换viewpager中的fragment,让fragment走正常的生命周期方法:onCreate,onCreateView,onResume?

最佳答案

最后,我修复了它。

第 1 步:

使用 FragmentStatePagerAdapter 而不是 FragmentPagerAdapter

第 2 步:

像这样实现 getItemPosition:

 @Override
public int getItemPosition(Object object){
return PagerAdapter.POSITION_NONE;
}

第 3 步:

调用 Viewpager 的 setOffscreenPageLimit(int i) 来保存状态。

关于android - 单击NavigationView项时如何更改tablayout下的viewpager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31455836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com