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

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -