如果我们必须在android中使用viewpager创建多个页面,那么我们是不是必须创建多个片段?还有其他选择吗?

Posted

技术标签:

【中文标题】如果我们必须在android中使用viewpager创建多个页面,那么我们是不是必须创建多个片段?还有其他选择吗?【英文标题】:If we have to create multiple pages using a viewpager in android, then do we have to create multiple fragments? Is there any other alternative?如果我们必须在android中使用viewpager创建多个页面,那么我们是否必须创建多个片段?还有其他选择吗? 【发布时间】:2019-03-08 00:02:31 【问题描述】:

我正在创建一个 android 测验应用程序,我将在其中使用 viewpager。我已经阅读了一些教程,其中为每个新页面为片段/选项卡创建了一个新类。现在,如果我想要总共 15 页,那么我必须创建那么多类吗?没有其他选择吗?

【问题讨论】:

【参考方案1】:

ViewPager 中的每个页面都是Fragment 的不同实例,但不要求每个页面都是Fragment 的不同class

在一个过于简单的应用程序中,您可以想象ViewPager 中的每个页面只会显示不同的数字。你可以通过创建一个OneFragment 类来显示“1”、一个TwoFragment 类来显示“2”等来实现这一点。或者,您可以创建一个 NumberFragment 类并使用十五个不同的实例来显示十五个不同的数字:

public class NumberFragment extends Fragment 

    public static NumberFragment newInstance(int number) 
        Bundle args = new Bundle();
        args.putInt("number", number);

        NumberFragment fragment = new NumberFragment();
        fragment.setArguments(args);

        return fragment;
    

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        View root = inflater.inflate(R.layout.number_fragment, container, false);

        int number = getArguments().getInt("number");
        String numberText = String.valueOf(number);

        TextView numberView = root.findViewById(R.id.numberView);
        numberView.setText(numberText);

        return root;
    

有了这个,你的FragmentPagerAdapter 就非常简单了:

public class MyAdapter extends FragmentPagerAdapter 

    @Override
    public Fragment getItem(int position) 
        return NumberFragment.newInstance(position);
    

    @Override
    public int getCount() 
        return 15;
    

同样的概念也适用于更复杂的应用程序。只要ViewPager 的每个页面的数据结构相同,您就可以通过将必要的配置传递给newInstance() 来创建单个Fragment 类的新实例。

您还可以将此技术与为每个页面创建新的Fragment 子类的技术混合搭配。也许你希望你的第一页和最后一页是唯一的,但是中间的十三页基本都是一样的。

【讨论】:

感谢您的回答。好吧,我是 android 的初学者,那么在我的情况下这将如何工作?在每个页面上,我必须显示一个带有相应单选按钮的新问题。我真的很困惑在哪里存储数据并在页面上相应地显示它。 这取决于问题在您的应用中的呈现方式。【参考方案2】:

您应该为要在ViewPager 中显示的每个不同页面创建一个Fragment。然后您可以通过FragmentPagerAdapter 中的位置选择每个Fragment

【讨论】:

以上是关于如果我们必须在android中使用viewpager创建多个页面,那么我们是不是必须创建多个片段?还有其他选择吗?的主要内容,如果未能解决你的问题,请参考以下文章

android之ViewPager修改滑动速度

Android ViewPager 实现自动滚动效果

如何在 Android 中向 ViewPager 添加进度条

Android中Fragment和ViewPager那点事儿

android 内部viewpager添加点击事件之后不能滑动了

Android ViewPager 适配器修改其他页面