java - 使用 FragmentStatePagerAdapter 在 ViewPager 中刷新 fragment

标签 java android android-fragments android-viewpager

我正在使用 viewPager,因为它具有在两个 Fragment 之间滑动的滑动功能。但是我想在滑动时刷新 fragment 内容。 FragmentStatePagerAdapter 在缓存方面做得非常好,因此很难让 Fragment 重新加载。 我试过将所有内容都放在 onResume 方法中,但这没有任何效果。

我的适配器非常简单:

public class AdapterHomePre extends FragmentStatePagerAdapter {

    ArrayList<Fragment> mFrags = new ArrayList<Fragment>();

    public AdapterHomePre(FragmentManager fm) {
        super(fm);

        mFrags.add(new FragmentOne());
        mFrags.add(new FragmentTwo());
    }

    @Override
    public int getCount() {
        return mFrags.size();
    }

    @Override
    public Fragment getItem(int position) {
        return mFrags.get(position);
    }
}

我已经按照堆栈溢出的建议尝试了各种方法,包括建议的:

@Override
public int getItemPosition(Object object) {
    return POSITION_NONE;
}

这没有区别。

我真的不想每次都销毁 fragment ,但我什至无法让它工作。

最佳答案

我最后做的是编辑设置 viewPager 的 Fragment,以便它强制子 Fragment 重新加载:

    mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i2) {
            //Not used
        }

        @Override
        public void onPageSelected(int position) {
            //Force the fragment to reload its data
            Fragment f = mAdapter.getItem(position);
            f.onResume();
        }

        @Override
        public void onPageScrollStateChanged(int i) {
            //Not used
        }
    });

关于java - 使用 FragmentStatePagerAdapter 在 ViewPager 中刷新 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26359308/

相关文章:

Android:FragmentTransaction 隐藏不适用于 DialogFragment

android - 底部工具栏不显示在具有 GridView 的 fragment 中

java - native 内存与 Java 应用程序内存

android - 我的 mac 在使用 Android Studio 3.2 时突然死机

java - 从 ArrayList<Long> 到 Intent 的理智方式

java - if 语句更简洁

android - 检测 Apk 中的代码篡改

android - 如何从另一个 fragment 获取适配器

java - 如何在Appium中获取和存储列表数据以及如何点击特定的搜索记录

java - 我正在为 CertificateException 的异常(exception)而苦苦挣扎。如何生成带有主题备用名称的证书