Java 重新启动viewpager时,它将继续执行上一个片段
该活动有一个Java 重新启动viewpager时,它将继续执行上一个片段,java,android,android-fragments,android-viewpager,Java,Android,Android Fragments,Android Viewpager,该活动有一个homeFragment,其中包含一个viewPager 如果我刷新homeFragment,viewPager也会使用新数据重新生成 但是,viewPager中的旧片段将在创建适配器之前重新执行 我没有得到一个明确的答案,即使我用谷歌搜索它 1。homeFragment刷新代码: Fragment currentFragment = null; currentFragment = getSupportFragmentManager().findFragmentById(R.id.c
homeFragment
,其中包含一个viewPager
如果我刷新homeFragment
,viewPager
也会使用新数据重新生成
但是,viewPager
中的旧片段将在创建适配器之前重新执行
我没有得到一个明确的答案,即使我用谷歌搜索它
1。homeFragment刷新代码:
Fragment currentFragment = null;
currentFragment = getSupportFragmentManager().findFragmentById(R.id.content_frame);
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.detach(currentFragment);
ft.attach(currentFragment);
ft.commit();
2。适配器
public class ChartViewPagerAdapter extends FragmentStatePagerAdapter {
public ChartViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
ChartFragment chartFragment = new ChartFragment();
Bundle args = new Bundle();
args.putInt("POSITION", i);
chartFragment.setArguments(args);
return chartFragment;
//return ChartFragment.newInstance(i);
}
@Override
public int getCount() {
switch (MainActivity.countryCode) {
case "US":
return 4;
case "KR":
return 3;
case "DE":
return 3;
case "JP":
return 1;
case "CN":
return 1;
case "HK":
return 1;
case "FR":
return 3;
case "GB":
return 2;
default:
return 3;
}
}
}
viewpager.setSaveParentEnlaled(false)时代码>但如果我看到日志记录,它将被再次调用同一代码多次,因此我得到错误消息
homeFragment
中运行该方法而不使用分离/附加方式,则这不是问题,但设计应使用分离/附加方式viewpager.setAdapter(null)
还是在科特林
viewpager.adapter = (null)
它会将ViewPager重置为开始位置。您必须调用
viewpager.setAdapter(null)
还是在科特林
viewpager.adapter = (null)
它会将ViewPager重置为开始位置。它不工作。问题是,不管适配器是什么,viewpager都会调用前面的片段。我认为这个问题与分离/连接方式有关,它不起作用。问题是,不管适配器是什么,viewpager都会调用前面的片段。我认为这个问题与分离/连接方式有关