android - Switch fragment Fail inside viewpager -


my hierarchy this.a viewpager included 3 pages(all fragment),called newfragment,involedfragment , mefragment,and outside viewpager set radiobutton switch between newfragment , fragment named hotfragment,for reason used hide(),show()to manage switch,here is![enter image description here code

page 1

page 2

page 3

radiobutton check listener

private class checkedchangelistener implements radiogroup.oncheckedchangelistener {     @override     public void oncheckedchanged(radiogroup group, int checkedid) {         switch (checkedid) {             case r.id.button_new:                 mfragmentatpos0 = newfrag;                 fragtransaction = fragmentmanager.begintransaction();                 if(!newfrag.isadded()){                     fragtransaction.hide(hotfrag).add(r.id.mainviewpager,newfrag).commit();                 }                 else{                     fragtransaction.hide(hotfrag).show(newfrag).commit();                 }                 mfragmentatpos0 = newfrag;                   toast.maketext(mainactivity.this, "new", toast.length_short).show();                 break;             case r.id.button_hot:                  fragtransaction = fragmentmanager.begintransaction();                 if(!hotfrag.isadded()){                     fragtransaction.hide(newfrag).add(r.id.mainviewpager,hotfrag).commit();                 }                 else{                     fragtransaction.hide(newfrag).show(hotfrag).commit();                 }                 mfragmentatpos0 = hotfrag;                   toast.maketext(mainactivity.this, "hot", toast.length_short).show();                 break;          }     } } 

and fragmentpageradapter

private class mypageradapter extends fragmentpageradapter {      private final fragmentmanager mfragmentmanager;      public mypageradapter(android.support.v4.app.fragmentmanager fm) {         super(fm);         mfragmentmanager = fm;     }     @override     public fragment getitem(int position) {         if(position == 0){             log.d("check","111");             return mfragmentatpos0;         }         else if(position == 1){             return(new involvefragment());         }         else {             return(new mefragment());         }      }     @override     public int getcount() {         return 3;     }     @override     public int getitemposition(object object)     {     if (object instanceof newfragment && mfragmentatpos0 == hotfrag)         return position_none;     return position_unchanged;     } } 

my problem hotfrag didn't show,but worked (i put log code in hotfrag check),and viewpager works fine,i stucked here several hours still got no way solve it.

there answer found quite similar,it's here replace fragment inside viewpager, worked hide,show, not replace.

anyone help?thanks lot!


Comments