Android 如何将ViewPager的第一个片段替换为另一个片段,并与前一个片段位于同一位置

Android 如何将ViewPager的第一个片段替换为另一个片段,并与前一个片段位于同一位置,android,android-fragments,android-viewpager,fragment,android-tablayout,Android,Android Fragments,Android Viewpager,Fragment,Android Tablayout,我正在我的应用程序中使用TabLayout和ViewPager。我的ViewPager中有两个选项卡。我有两个选项卡的主要2片段。 第一个片段类似于用户单击submit时的表单,另一个片段出现在用户面前,依此类推,并位于前一个片段的相同位置。我想在第一个片段(我的ViewPager的第一个位置)中这样做,并在单击“上一步”按钮时保持上一个片段的状态。我希望我以正确的方式发布我的问题 这是我的寻呼机 <LinearLayout xmlns:android="http://schem

我正在我的应用程序中使用
TabLayout
ViewPager
。我的ViewPager中有两个选项卡。我有两个选项卡的主要2
片段。
第一个
片段
类似于用户单击submit时的表单,另一个
片段
出现在用户面前,依此类推,并位于前一个片段的相同位置。我想在第一个片段(我的ViewPager的第一个位置)中这样做,并在单击“上一步”按钮时保持上一个片段的状态。我希望我以正确的方式发布我的问题

这是我的寻呼机

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    tools:context=".UI.Fragments.OnlineBookingModule.OnlineBookingFragment">

   <com.google.android.material.tabs.TabLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/tabLayout"
       app:tabIndicatorColor="@color/colorPrimary"
       android:background="@color/bg_nav"/>

    <androidx.viewpager.widget.ViewPager
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/viewPager"/>

</LinearLayout>
下面是如何在我的
片段中设置我的viewPager

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_online_booking, container, false);

        tabLayout = view.findViewById(R.id.tabLayout);
        viewPager = view.findViewById(R.id.viewPager);

        Preferences preferences = new Preferences();
        preferences.saveSmallDays(getActivity(),0);
        preferences.saveBigDays(getActivity(),0);
        assert getFragmentManager() != null;
        pagerAdapter = new BookingPagerAdapter(getFragmentManager(), FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT,getActivity());
        tabLayout.setupWithViewPager(viewPager);
        viewPager.setAdapter(pagerAdapter);
        return view;
    }

您可能会更好地使用ViewPager 2,因为这种“可修改的片段集合”我可以用ViewPager 2的另一个片段替换第一个位置(第一个片段)吗?@Andrew,请问ViewPager和ViewPager 2之间的区别是什么ViewPager是这类小部件的一个旧实现,许多小部件被弃用,Viewpager2是一个基于Recyclerview的新实现,“Viewpager2取代了ViewPager,解决了其前身的大部分难点,包括从右到左的布局支持、垂直方向、可修改的片段集合等。”与Recyclerview一样,您可以添加或删除项。
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_online_booking, container, false);

        tabLayout = view.findViewById(R.id.tabLayout);
        viewPager = view.findViewById(R.id.viewPager);

        Preferences preferences = new Preferences();
        preferences.saveSmallDays(getActivity(),0);
        preferences.saveBigDays(getActivity(),0);
        assert getFragmentManager() != null;
        pagerAdapter = new BookingPagerAdapter(getFragmentManager(), FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT,getActivity());
        tabLayout.setupWithViewPager(viewPager);
        viewPager.setAdapter(pagerAdapter);
        return view;
    }