我有一个 Activity ,其中包括具有三个 fragment 的 ViewPager。在第二个 fragment 中,我也有 ViewPager 和两个不同的 fragment 。 这是我的 MainActivityPagerAdapter,它与 MainActivity 中的 ViewPager 连接:
public class MainActivityPagerAdapter extends FragmentStatePagerAdapter implements LoginView.LoginStateChangeListener {
private static final String TAG = MainActivityPagerAdapter.class.getName();
private MapFragment mapFragment = new MapFragment();
private UserProfileFragment userProfileFragment = new UserProfileFragment();
private CompanyProfileFragment CompanyProfileFragment = new DiveCenterProfileFragment();
private NotificationsFragment notificationsFragment = new notificationsFragment();
public MainActivityPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return mapFragment;
case 1:
return notificationsFragment;
case 2:
switch (MyApplication.getInstance().getSharedPreferenceHelper().getActiveUserType()) {
case DIVECENTER:
return companyProfileFragment;
case DIVER:
case INSTRUCTOR:
return userProfileFragment;
case NONE:
return userProfileFragment;
}
default:
return null;
}
}
@Override
public int getCount() {
return 3;
}
@Override
public int getItemPosition(Object object) {
Log.i(TAG, "getItemPosition");
return POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
return null;
}
}
这是我的第二个 fragment 的 ViewPager 寻呼机适配器:
public class NotificationsPagerAdapter extends FragmentStatePagerAdapter {
private PersonalNotificationsFragment personalNotificationsFragment = new PersonalNotificationsFragment();
private ActivityNotificationsFragment activityNotificationsFragment = new ActivityNotificationsFragment();
public NotificationsPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return personalNotificationsFragment;
case 1:
return activityNotificationsFragment;
default:
return null;
}
}
@Override
public int getCount() {
return 2;
}
public void setPersonalNotificationsFragment(PersonalNotificationsFragment personalNotificationsFragment) {
this.personalNotificationsFragment = personalNotificationsFragment;
}
public void setActivityNotificationsFragment(ActivityNotificationsFragment activityNotificationsFragment) {
this.activityNotificationsFragment = activityNotificationsFragment;
}
@Override
public CharSequence getPageTitle(int position) {
return null;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
因此,应用程序中有两种用户类型:
- 简单用户
- 公司
当用户更改类型时,我需要刷新 MainActivity 中的所有 fragment ,包括第二个 fragment 内的 fragment 。为此,我对 MainActivityViewPager 使用 notificationDataSetChanged() ,它工作正常,但第二个 fragment 内的 fragment 不会更新(不会调用 onCreateView,我只看到空 View )。 可能出现什么问题?
最佳答案
使用 getChildFragmentManager() 作为内部 viewPager
关于android - 重新加载 ViewPager 中的 fragment ,该 fragment 位于 ViewPager 中的另一个 fragment 内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187161/