Android - Changing Fragments within an Activity -


i creating android app uses main activity, , several fragments. main activity min "control" everything, , each fragment displays different screen different information. here of code main activity:

public class mainmenu extends fragmentactivity implements firstmenu.fragmentlistener, checklist.fragmentlistener,     tool.fragmentlistener{  @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main_menu);      firstmenu firstmenu = new firstmenu();      getsupportfragmentmanager().begintransaction().add(r.id.fragment_container,             firstmenu).commit(); }  public void changescreen() {      checklist checklist = new checklist();      android.support.v4.app.fragmenttransaction transaction = getsupportfragmentmanager().begintransaction();      transaction.replace(r.id.fragment_container, checklist);     transaction.addtobackstack(null);     transaction.commit();  }  public void changescreentwo() {      chemicalchecklist chemchecklist = new chemicalchecklist();      android.support.v4.app.fragmenttransaction transaction = getsupportfragmentmanager().begintransaction();      transaction.replace(r.id.fragment_container, chemchecklist);     transaction.addtobackstack(null);     transaction.commit();  } 

and here code first fragment displays menu:

public class firstmenu extends fragment {     fragmentlistener fragmentchanger;      public interface fragmentlistener {         public void changescreen();         public void changescreenfour();         public void changescreenfive();     }      @override     public void onattach(activity activity) {         super.onattach(activity);         try {             fragmentchanger = (fragmentlistener) activity;         } catch (classcastexception e) {             throw new classcastexception();         }     }      public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate) {         container.removeallviews();         view view = inflater.inflate(r.layout.menu, container, false);          button checklistbutton = (button) view.findviewbyid(r.id.checklistbutton);         button toolbutton = (button) view.findviewbyid(r.id.toolbutton);         button timefusebutton = (button) view.findviewbyid(r.id.timefusecalculator);         button blastfragbutton = (button) view.findviewbyid(r.id.blastfragbutton);         button demobutton = (button) view.findviewbyid(r.id.demobutton);            checklistbutton.setonclicklistener(                 new view.onclicklistener() {                     @override                     public void onclick(view v) {                         buttonclicked(v);                     }                 }         );          toolbutton.setonclicklistener(                 new view.onclicklistener() {                     @override                     public void onclick(view v) {                         toolbuttonclicked(v);                     }                 }         );          demobutton.setonclicklistener(                 new view.onclicklistener() {                     @override                     public void onclick(view v) {                         demobuttonclicked(v);                     }                 }         );            blastfragbutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 intent intent = new intent(getactivity(), blastfrag.class);                 startactivity(intent);             }         });         timefusebutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 intent intent = new intent(getactivity(), timefuse.class);                 startactivity(intent);             }         });          return view;      }      public void buttonclicked( view v ) {         fragmentchanger.changescreen();     }     public void toolbuttonclicked( view v ) {         fragmentchanger.changescreenfour();     }     public void demobuttonclicked( view v ) {         fragmentchanger.changescreenfive();     } } 

and code second fragment, displayed screen using method changescreen();

public class checklist extends fragment{     fragmentlistener fragmentalternator;      public interface fragmentlistener {         public void changescreentwo();     }      @override     public void onattach(activity activity) {         super.onattach(activity);         try {             fragmentalternator = (fragmentlistener) activity;         } catch (classcastexception e) {             throw new classcastexception();         }     }      public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate) {         container.removeallviews();         view view = inflater.inflate(r.layout.checklists, container, false);          button chembutton = (button) view.findviewbyid(r.id.chembutton);           chembutton.setonclicklistener(                 new view.onclicklistener() {                     @override                     public void onclick(view v) {                         buttonclicked(v);                     }                 }         );          return view;     }     public void buttonclicked( view v ) {         fragmentalternator.changescreentwo();     } } 

i have many more fragments displayed screen using more methods, such as: changescreentwo(), changescreenthree(), changescreenfour(), etc. code methods pretty same. difference is creating different objects different classes. i'm wondering if current way i'm doing okay, or if there way can make these "changescreen" methods 1 method, , pass in each type of class parameter. i've looked on , can't seem find answer i'm looking particular situation.

pass in fragment index , use choose fragment type.

public void changescreen(int position) {     switch(position){         case 0:             getsupportfragmentmanager().begintransaction()                 .replace(r.id.fragment_container, new checklist())                 .addtobackstack(null)                 .commit();             break;         case 1:             getsupportfragmentmanager().begintransaction()                 .replace(r.id.fragment_container, new chemicalchecklist())                 .addtobackstack(null)                 .commit();             break;     } } 

Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -