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;
}