#java #android #android-fragments #android-viewpager
#java #Android #android-фрагменты #android-viewpager
Вопрос:
Действие имеет a homeFragment
, которое содержит a 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
немедленно, не используя способ отсоединения / присоединения, но в дизайне должен использоваться способ отсоединения / присоединения.
Ответ №1:
Вы должны вызвать
viewpager.setAdapter(null)
или в kotlin
viewpager.adapter = (null)
Это приведет к сбросу ViewPager в исходное положение.
Комментарии:
1. это не работает. проблема в том, что независимо от адаптера viewpager вызывает предыдущие фрагменты. Я думаю, что эта проблема связана с способом отсоединения / присоединения