重新启动viewpager时,它将继续执行上一个片段

时间:2019-04-15 06:09:29

标签: java android android-fragments android-viewpager

该活动的homeFragment包含一个viewPager

如果刷新homeFragment,则viewPager也会用新数据重新生成。

但是在创建适配器之前,将重新执行viewPager中的旧片段。

即使我用Google搜索,也没有明确的答案

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;
       }
   }
}
  1. 最接近的方法是在执行viewpager.setSaveParentEnlaled (false);时,但是如果我看到日志记录,它将多次被相同的代码调用,所以我会收到错误消息。

  2. 这没问题,如果我更改了刷新方法以立即在homeFragment中运行该方法而无需使用分离/附加方式,但设计应使用分离/附加方式

1 个答案:

答案 0 :(得分:0)

您必须致电

viewpager.setAdapter(null)

或科特林

viewpager.adapter = (null)

它将重置ViewPager到开始位置。