android - 重新加载 ViewPager 中的 fragment ,该 fragment 位于 ViewPager 中的另一个 fragment 内

标签 android android-fragments android-viewpager android-support-library

我有一个 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/

相关文章:

android - 但实际上,AndroidX 分页库如何知道何时加载更多页面?

android - Titanium 中的 UI 感觉和外观,PhoneGap 与原生相比

java - 快速移动物体的碰撞检测

java - 使用 viewPager 时无法恢复 Activity

java - 使用 NanoHttpd 从 POST 请求中检索文件

android - 切换选项卡时重置 fragment 后退堆栈

android - 始终实例化 fragment 或保留对 fragment 的引用更好吗?

java - 无法从 android.app.FragmentManager 转换为 android.support.v4.app.FragmentManager

android - 在 Android 中做全屏图像 slider 的最佳方式(如 Android Gallery)

android - ViewPager 和 RecyclerView 的错误