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

时间:2018-10-02 19:54:11

标签: android android-fragments android-viewpager android-tabs

我正在创建一个android测验应用程序,其中将使用viewpager。我已经看过一些教程,其中为每个新页面为片段/选项卡创建一个新类。现在,如果我希望总共有15页,那么我是否需要创建那么多的类?还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

ViewPager中的每个页面都将是Fragment的不同 instance ,但是并不要求每个页面都必须是{{ 1}}。

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

TwoFragment

有了这个选项,您的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类的新实例。

您还可以将该技术与为每个页面创建一个新的Fragment子类的技术进行混搭。也许您希望首页和末页是唯一的,但中间的13页基本上都相同。

答案 1 :(得分:0)

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