android - Why this java recursive method not creating infinite loop? -


i new android development, while trying read code example, encountered method being called within itself, logically should create infinite loop of calling itself. not. why?

in mainactivity.java

 public void onwishlistselected() {         launchuserspecificfragment(new wishlistfragment(), wishlistfragment.class.getsimplename(), new logindialoginterface() {             @override             public void successfulloginorregistration(user user) {                 // if login successful launch wishlistfragment.                 onwishlistselected(); // why doesn't create infine loop?             }         });     } 

and calling it:

public boolean onoptionsitemselected(menuitem item) {          int id = item.getitemid();          if (id == r.id.action_wish_list) {             onwishlistselected();             return true;         } else if (id == r.id.action_cart) {             oncartselected();             return true;         }          return super.onoptionsitemselected(item);     } 

edit

here code inside launchuserspecificfragment

   private void launchuserspecificfragment(fragment fragment, string transactiontag, logindialoginterface loginlistener) {         if (settingsmy.getactiveuser() != null) {             replacefragment(fragment, transactiontag);         } else {             dialogfragment logindialogfragment = logindialogfragment.newinstance(loginlistener);             logindialogfragment.show(getsupportfragmentmanager(), logindialogfragment.class.getsimplename());         }     } 

and replacefragment

 private void replacefragment(fragment newfragment, string transactiontag) {         if (newfragment != null) {             fragmentmanager frgmanager = getsupportfragmentmanager();             fragmenttransaction fragmenttransaction = frgmanager.begintransaction();             fragmenttransaction.setallowoptimization(false);             fragmenttransaction.addtobackstack(transactiontag);             fragmenttransaction.replace(r.id.main_content_frame, newfragment).commit();             frgmanager.executependingtransactions();         } else {             timber.e(new runtimeexception(), "replace fragments null newfragment parameter.");         }     } 

onwishlistselected not calling itself, there not infinite recursion here.

it calling launchuserspecificfragment, receives instance of anonymous class implementing logindialoginterface argument.

the anonymous class contains successfulloginorregistration method calls onwishlistselected, calling onwishlistselected doesn't execute successfulloginorregistration method. when successfulloginorregistration executed depends on logic of launchuserspecificfragment.


Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -