从另一个屏幕转到后,TabLayout中的Android ViewPager丢失

问题描述

我的TabLayout和ViewPager在Fragment内。因此,ViewPager在开始时显示了片段,但是当我从另一个屏幕回来时,ViewPager丢失了。

我在我的应用程序上使用了按钮导航,如果我第一次单击包含ViewPager的菜单,它将起作用,但是在单击其他菜单然后返回到ViewPager屏幕后,缺少viewPager内容。有人可以帮我吗?

这是我的适配器:

    public class AdapterTabInfo extends FragmentStatePagerAdapter implements UpperExFragment.OnFragmentInteractionListener,LowerExFragment.OnFragmentInteractionListener {

    int numTabInfo;

    public AdapterTabInfo(FragmentManager fm,int numTabInfo){
        super(fm);
        this.numTabInfo = numTabInfo;
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                UpperExFragment upperExFragment = new UpperExFragment();
                return upperExFragment;
            case 1:
                LowerExFragment lowerExFragment = new LowerExFragment();
                return lowerExFragment;
            default:
                return null;
        }
    }

    public int getCount(){
        return numTabInfo;
    }

    @Override
    public void onFragmentInteraction(Uri uri) {

    }
}

这是我的XML:

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/info_tab_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="?attr/actionBarSize"
            android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
            app:tabIndicatorColor="@color/colorWhite"
            app:tabTextColor="@color/colorWhite"/>

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

        </androidx.viewpager.widget.ViewPager>

    </RelativeLayout>

这是我的Java

public InfoFragment() {}

TabLayout tabLayout;
ViewPager viewPager;

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_info,container,false);

    //FindView
    setFindView(view);
    //TabLayout
    setTabLayout();

    return view;
}

@Override
public void onResume() {
    super.onResume();
}

private void setFindView(View view){
    tabLayout = view.findViewById(R.id.info_tab_layout);
    viewPager = view.findViewById(R.id.info_pager);
}

private void setTabLayout(){
    //TabLayout Tabs
    tabLayout.addTab(tabLayout.newTab().setText("Upper Extremity"));
    tabLayout.addTab(tabLayout.newTab().setText("Lower Extremity"));

    //Adapter TabLayout
    AdapterTabInfo adapterTabInfo = new AdapterTabInfo(getActivity().getSupportFragmentManager(),tabLayout.getTabCount());
    viewPager.setAdapter(adapterTabInfo);
    viewPager.setonPagechangelistener(new TabLayout.TabLayoutOnPagechangelistener(tabLayout));

    //TabLayout OnClick
    tabLayout.setonTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)