问题描述
该活动的homeFragment
包含viewPager
.
如果刷新homeFragment
,则也会使用新数据重新生成viewPager
.
If I refresh the homeFragment
, the viewPager
is also regenerated with the new data.
但是在创建适配器之前,将重新执行viewPager
中的旧片段.
But The old fragment in the viewPager
is re-executed before the adapter is created.
即使我用Google搜索,也没有明确的答案
I do not get a clear answer even if I googleing it
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);
时,但是如果我看到日志记录,它将多次被相同的代码调用,所以我会收到错误消息.
The closest approach is when executing
viewpager.setSaveParentEnlaled (false);
but If I see the log record, it will be called again same code several times, so I get error message.
这没问题,如果我更改了刷新方法以立即在homeFragment
中运行该方法而无需使用分离/附加方式,但是设计应使用分离/附加方式.
It is not a problem If I change the refresh method to run the method in the homeFragment
immediately without using detach / attach way, but the design should use the detach / attach way.
推荐答案
您必须致电
viewpager.setAdapter(null)
或科特林
viewpager.adapter = (null)
它将重置ViewPager到开始位置.
It will be reset the ViewPager to start position.
这篇关于重新启动viewpager时,它会继续执行上一个片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!