with viewpager tablayout showing pageradapter not multiple fragments con java android android-viewpager fragment low-memory

java - tablayout - La conexión de fragmentos sueltos de Viewpager en memoria baja mata



viewpager con fragments (2)

en mi actividad uso viewpager Creo dos fragmentos y los adjunto al buscapersonas y de vez en cuando llamo a algunos métodos de estos fragmentos en mi actividad ... después de que la aplicación muera en memoria baja y los fragmentos vueltos a crear están allí pero no hay conexión con el visor de algún sitio ... puedo no llame a MyFragment.mymethod () .. dice MyFragment es nulo

public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { // getItem is called to instantiate the fragment for the given page. if(position==0){ if(homeFragment==null){ homeFragment=new HomeFragment(); } return homeFragment; }else{ if(mapFragment==null){ mapFragment=new Map(); } return mapFragment; } }

. . .

@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if(id==R.id.action_search){ return true; }else if(id==R.id.action_feedback){ }else if(id==R.id.action_rate_me){ }else if(id==R.id.action_show_favorites ){ if(mViewPager.getCurrentItem()!=0){ mViewPager.setCurrentItem(0); } homeFragment.populateListWithFavorites(); return true; }else if(id==R.id.action_history){ if(mViewPager.getCurrentItem()!=0){ mViewPager.setCurrentItem(0); } homeFragment.populateListWithHistory(); return true; } return super.onOptionsItemSelected(item); }


Encontré la solución ...

es como decir que las variables de mi fragmento en la actividad principal se borraron, así que ya no tengo conexión con los fragmentos. Lo que hice fue dentro de onAttach () uní mi fragmento a las principales variables de actividad nuevamente

@Override public void onAttach(Activity activity) { super.onAttach(activity); mActivity = activity; ((RestaurantActivityViewPager)mActivity).menuFragment=this; } public static MenuFragment newInstance(int sectionNumber) { MenuFragment fragment = new MenuFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; }


Si obtienes tabFragment por este código

Fragment fragment = mPagerAdapter.getItem(position);

Causa ese error cuando hay poca memoria. Prueba con este

fragment = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.rewards_viewpager + ":"+position);