Android ViewPager 和 FragmentStatePagerAdapter - 未在第一项上启动

标签 android android-viewpager

我有一个包含项目列表的 View 。当我单击特定列表项时,它会在新 Activity (和新 fragment )中显示该特定对象的详细信息。一切正常。

现在我想添加一个功能,用户可以从选定的详细 Activity 显示项目滑动到下一个/上一个项目,这样他就不必返回到列表并选择另一个项目。我尝试使用 ViewPager 和 FragmentStatePagerAdapter,它确实有效,而且效果非常好。

我的 Activity.java:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_exercise);

        // Instantiate a ViewPager and a PagerAdapter.
        mPager = (ViewPager) findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(mPagerAdapter);

    ...
    }

   private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        public ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
        // pos is the position of the object in the list    
            Fragment fragment = ExerciseFragment.newInstance(exercisesArray, pos+position);
            return fragment;
        }

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

我的问题:

  1. ViewPager 是否适合我的 Intent ?每当用户滑动到下一个项目时,都会实例化一个新 fragment 。该列表可以包含大约 100 个项目...所以可能会创建 100 个 fragment ?这会是个问题吗?

  2. 只有在第一个项目被选中并滑动时,我的实现才能正常工作。例如:我在一个列表中有 5 个项目,第一个被点击。现在我可以滑动到第二个项目,第三个项目,回到第二个。但是如果用户点击列表的第三项,我就不能向左滑动到第二项和第一项!有人有想法吗?

非常感谢!

最佳答案

您不需要在 viewpager 中预先加载所有 fragment ,为了决定您要预先加载的 fragment 数量限制,请使用 viewPager.setOffscreenPageLimit(yourDesiredIntegerValue); 更多信息,see this


注意:您不能将此限制设置为零,但即使您尝试设置它,viewpager 也会忽略它并将此限制设置为 1(默认值)。

关于第二个问题,将您的 Activity 保留在后台堆栈中,当您的用户返回到后台堆栈时,正常流程将随之而来。就这么简单。

关于Android ViewPager 和 FragmentStatePagerAdapter - 未在第一项上启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40917831/

相关文章:

java - 无法从 EditText 解析 Double

android - Facebook LoginButton 在 DialogFragment 中不起作用

android - Android版MuPDF : Option for fragment instead Activity

java - 我不明白如何组织我的 fragment

android - 使用 View 作为页面而不是 fragment 保存 viewpager 的状态

android - 在 ViewPager android 中锁定页面 fragment

android - 有什么优化的方法可以在 android 中呈现大列表吗?

android - MapView- 禁用持续缓存 map

android - 如何在屏幕旋转时保持 Presenter 的嵌套 Fragment 实例

android - WebView 未加载 ViewPager