从另一个片段导航后,ViewPager在返回时不可见
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从另一个片段导航后,ViewPager在返回时不可见相关的知识,希望对你有一定的参考价值。
我有默认创建的经典底部导航,有3个TAB(FragmentOne,FragmentTwo和FragmentThree)。第一个片段(FragmentOne)具有ViewPager,其中包含两个静态内部片段(FragmentInner1和FragmentInner2)。
当应用程序启动时,evrything很好,所以在FragmentOne中我们可以看到FragmentInner1并可以导航到FragmentInner2。
但是在从FragmentTwo导航到FragmentOne后,FragmentInner1不可见。这是一个问题。
我想我们应该以某种方式再创造它?我从这里https://developer.android.com/guide/components/fragments.html和https://developer.android.com/training/implementing-navigation/lateral.html#PagerTitleStrip调查手册,但它没有帮助,我的代码看起来一样。
请帮忙。谢谢!
FragmentOne
public class FragmentOne extends Fragment {
//This is our viewPager
private ViewPager viewPager;
//Fragments
FragmentInner1 fragmentInner1;
FragmentInner2 fragmentInner2;
ViewPagerAdapter adapter;
private View view;
public FragmentOne() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_fragment_one, container, false);
//Initializing viewPager
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
setupViewPager(viewPager);
return view;
}
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerAdapter(getActivity().getSupportFragmentManager());
fragmentInner1=new FragmentInner1();
fragmentInner2=new FragmentInner2();
adapter.addFragment(fragmentInner1);
adapter.addFragment(fragmentInner2);
viewPager.setAdapter(adapter);
}
@Override
public void onAttach(Context context)
{
super.onAttach(context);
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
ViewPagerAdapter
public class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = mFragmentList.get(position);
return fragment;
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment) {
mFragmentList.add(fragment);
}
}
FragmentInner1
public class FragmentInner1 extends Fragment {
public static FragmentInner1 newInstance( ) {
FragmentInner1 fragment = new FragmentInner1();
return fragment;
}
public FragmentInner1() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_fragment_inner1, container, false);
}
}
您必须使用getChildFragmentManager()
For Viewpager来调整Popback功能。
adapter = new ViewPagerAdapter(getChildFragmentManager());
这是因为Viewpager有多个片段,其中Viewpager本身或由另一个片段持有。因此,要调用和使用子片段。
You Can Refer this Documentation on ChildFragmentManager()
以上是关于从另一个片段导航后,ViewPager在返回时不可见的主要内容,如果未能解决你的问题,请参考以下文章
如何在将 Tablayout 与 viewpager 一起使用时从另一个片段调用 AsyncTask?