este problema se puede resolver de variadas formas, pero nosotros te dejamos la que para nosotros es la resolución más completa.
Solución:
Después de buscar en su código, descubrí que se olvidó de devolver un fragmento en obtiene el objeto método de PagerAdapter que anuló del FragmentStatePagerAdapter y no hay una declaración de interrupción en cada caso debido a que cada vez que un null se devolvió el valor.
Para hacerlo, debe crear otro fragmento nuevo para cada página en ViewPager o puede crear un nuevo fragmento que pueda usar en todas las páginas de ViewPager.
No puede usar la misma vista de reciclaje en las pestañas del paginador de vista que ha definido en el fragmento principal.
activity_fragment_one.xml
He arreglado su fragmento y he creado un nuevo Fragmento que puede usar en ViewPager Pages.
public class NewFragment extends Fragment
private RecyclerView mRecyclerView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
View view = inflater.inflate(R.layout.activity_fragment_one, container, false);
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs);
tabLayout.addTab(tabLayout.newTab().setText("A"));
tabLayout.addTab(tabLayout.newTab().setText("B"));
tabLayout.addTab(tabLayout.newTab().setText("C"));
final ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager);
// mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//mRecyclerView.setLayoutManager(mLayoutManager);
viewPager.setAdapter(new PagerAdapter(getFragmentManager(), tabLayout.getTabCount()));
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setupWithViewPager(viewPager);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
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)
);
return view;
public class PagerAdapter extends FragmentStatePagerAdapter
int mNumOfTabs;
public PagerAdapter(FragmentManager fm, int NumOfTabs)
super(fm);
this.mNumOfTabs = NumOfTabs;
@Override
public Fragment getItem(int position)
switch (position)
case 0:
return new FragmentTab();
case 1:
return new FragmentTab();
case 2:
return new FragmentTab();
default:
return null;
@Override
public int getCount()
return mNumOfTabs;
FragmentTab para cada página en View Pager (o puede crear un fragmento diferente para cada página según sus necesidades).
public class FragmentTab extends Fragment
RecyclerView mRecyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
View view = inflater.inflate(R.layout.fragment_tab, container, false);
mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mLayoutManager);
RecyclerView.Adapter mAdapter = new AdapterOne();
mRecyclerView.setAdapter(mAdapter);
return view;
fragment_tab.xml
Usar getChildFragmentManager()
en lugar de getSupportFragmentManager()
Sin los registros de errores, es difícil decir dónde y por qué obtiene el NullPointerException
.
Lo primero que me llamó la atención es que no vinculó su TabLayout
y ViewPager
. Utilice el siguiente código después de configurar el adaptador para el ViewPager
:
// setUpWithViewPager doesn't work without using a Runnable interface.
// Support library bug, maybe?
tabLayout.post(new Runnable()
@Override
public void run()
tabLayout.setupWithViewPager(viewPager);
);
No estoy seguro de si este es el problema, pero pruébalo 🙂
Si te ha sido de provecho este artículo, sería de mucha ayuda si lo compartieras con el resto juniors de este modo nos ayudas a extender nuestra información.