问题描述
我的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 (将#修改为@)