Maintaining BackStack In Bottom Navaigation












0















I am using bottomNavigation in my android app. I have 5 fragments A, B, C, D, E. The fragment B contains another fragment says B1. When I backpress on fragment B1, it closes the app. How can I move to fragment B when backpressed from fragment B1.



Here is my code



 bottomNavigationView.setOnNavigationItemSelectedListener(
item -> {
Fragment fragment = null;

switch (item.getItemId()) {
case R.id.A:
fragment = new A();
break;
case R.id.B:
fragment = new B();
break;
case R.id.C:
fragment = new C();
break;

case R.id.D:
fragment = new D();
break;

case R.id.E:
fragment = new E();
break;

}
return loadFragment(fragment);

});


private boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, fragment)
.commit();
return true;
}
return false;
}









share|improve this question



























    0















    I am using bottomNavigation in my android app. I have 5 fragments A, B, C, D, E. The fragment B contains another fragment says B1. When I backpress on fragment B1, it closes the app. How can I move to fragment B when backpressed from fragment B1.



    Here is my code



     bottomNavigationView.setOnNavigationItemSelectedListener(
    item -> {
    Fragment fragment = null;

    switch (item.getItemId()) {
    case R.id.A:
    fragment = new A();
    break;
    case R.id.B:
    fragment = new B();
    break;
    case R.id.C:
    fragment = new C();
    break;

    case R.id.D:
    fragment = new D();
    break;

    case R.id.E:
    fragment = new E();
    break;

    }
    return loadFragment(fragment);

    });


    private boolean loadFragment(Fragment fragment) {
    //switching fragment
    if (fragment != null) {
    getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.main_fragment, fragment)
    .commit();
    return true;
    }
    return false;
    }









    share|improve this question

























      0












      0








      0








      I am using bottomNavigation in my android app. I have 5 fragments A, B, C, D, E. The fragment B contains another fragment says B1. When I backpress on fragment B1, it closes the app. How can I move to fragment B when backpressed from fragment B1.



      Here is my code



       bottomNavigationView.setOnNavigationItemSelectedListener(
      item -> {
      Fragment fragment = null;

      switch (item.getItemId()) {
      case R.id.A:
      fragment = new A();
      break;
      case R.id.B:
      fragment = new B();
      break;
      case R.id.C:
      fragment = new C();
      break;

      case R.id.D:
      fragment = new D();
      break;

      case R.id.E:
      fragment = new E();
      break;

      }
      return loadFragment(fragment);

      });


      private boolean loadFragment(Fragment fragment) {
      //switching fragment
      if (fragment != null) {
      getSupportFragmentManager()
      .beginTransaction()
      .replace(R.id.main_fragment, fragment)
      .commit();
      return true;
      }
      return false;
      }









      share|improve this question














      I am using bottomNavigation in my android app. I have 5 fragments A, B, C, D, E. The fragment B contains another fragment says B1. When I backpress on fragment B1, it closes the app. How can I move to fragment B when backpressed from fragment B1.



      Here is my code



       bottomNavigationView.setOnNavigationItemSelectedListener(
      item -> {
      Fragment fragment = null;

      switch (item.getItemId()) {
      case R.id.A:
      fragment = new A();
      break;
      case R.id.B:
      fragment = new B();
      break;
      case R.id.C:
      fragment = new C();
      break;

      case R.id.D:
      fragment = new D();
      break;

      case R.id.E:
      fragment = new E();
      break;

      }
      return loadFragment(fragment);

      });


      private boolean loadFragment(Fragment fragment) {
      //switching fragment
      if (fragment != null) {
      getSupportFragmentManager()
      .beginTransaction()
      .replace(R.id.main_fragment, fragment)
      .commit();
      return true;
      }
      return false;
      }






      android android-fragments






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 18 '18 at 19:55









      Pub InstaPub Insta

      13




      13
























          1 Answer
          1






          active

          oldest

          votes


















          2














          While opening B1 Fragment use this



          private boolean loadFragmentB1(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;


          While opening other fragment except B1 , use this



          private boolean loadFragment(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .addToBackStack(null)
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;
          }
          return false;

          }


          And on activity override onBackPressed like this



          @Override
          public void onBackPressed(){
          if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
          getSupportFragmentManager().popBackStack();
          } else {
          super.onBackPressed();
          finish();
          }
          }





          share|improve this answer


























          • It's working fine but on backpressed the selected item in bottomnavigation is not changing

            – Pub Insta
            Nov 19 '18 at 15:35











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:37











          • When I back press on B1 it's going to home fragment, but the selected item in botttom navigation is still pointing to B

            – Pub Insta
            Nov 19 '18 at 16:46











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:52











          • I have checked the updated answer it's not working

            – Pub Insta
            Nov 19 '18 at 16:57











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53364859%2fmaintaining-backstack-in-bottom-navaigation%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          While opening B1 Fragment use this



          private boolean loadFragmentB1(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;


          While opening other fragment except B1 , use this



          private boolean loadFragment(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .addToBackStack(null)
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;
          }
          return false;

          }


          And on activity override onBackPressed like this



          @Override
          public void onBackPressed(){
          if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
          getSupportFragmentManager().popBackStack();
          } else {
          super.onBackPressed();
          finish();
          }
          }





          share|improve this answer


























          • It's working fine but on backpressed the selected item in bottomnavigation is not changing

            – Pub Insta
            Nov 19 '18 at 15:35











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:37











          • When I back press on B1 it's going to home fragment, but the selected item in botttom navigation is still pointing to B

            – Pub Insta
            Nov 19 '18 at 16:46











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:52











          • I have checked the updated answer it's not working

            – Pub Insta
            Nov 19 '18 at 16:57
















          2














          While opening B1 Fragment use this



          private boolean loadFragmentB1(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;


          While opening other fragment except B1 , use this



          private boolean loadFragment(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .addToBackStack(null)
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;
          }
          return false;

          }


          And on activity override onBackPressed like this



          @Override
          public void onBackPressed(){
          if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
          getSupportFragmentManager().popBackStack();
          } else {
          super.onBackPressed();
          finish();
          }
          }





          share|improve this answer


























          • It's working fine but on backpressed the selected item in bottomnavigation is not changing

            – Pub Insta
            Nov 19 '18 at 15:35











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:37











          • When I back press on B1 it's going to home fragment, but the selected item in botttom navigation is still pointing to B

            – Pub Insta
            Nov 19 '18 at 16:46











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:52











          • I have checked the updated answer it's not working

            – Pub Insta
            Nov 19 '18 at 16:57














          2












          2








          2







          While opening B1 Fragment use this



          private boolean loadFragmentB1(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;


          While opening other fragment except B1 , use this



          private boolean loadFragment(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .addToBackStack(null)
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;
          }
          return false;

          }


          And on activity override onBackPressed like this



          @Override
          public void onBackPressed(){
          if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
          getSupportFragmentManager().popBackStack();
          } else {
          super.onBackPressed();
          finish();
          }
          }





          share|improve this answer















          While opening B1 Fragment use this



          private boolean loadFragmentB1(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;


          While opening other fragment except B1 , use this



          private boolean loadFragment(Fragment fragment) {
          //switching fragment
          if (fragment != null) {
          getSupportFragmentManager()
          .beginTransaction()
          .addToBackStack(null)
          .replace(R.id.main_fragment, fragment)
          .commit();
          return true;
          }
          return false;

          }


          And on activity override onBackPressed like this



          @Override
          public void onBackPressed(){
          if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
          getSupportFragmentManager().popBackStack();
          } else {
          super.onBackPressed();
          finish();
          }
          }






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 20 '18 at 16:42

























          answered Nov 19 '18 at 3:50









          Rabindra KhadkaRabindra Khadka

          109214




          109214













          • It's working fine but on backpressed the selected item in bottomnavigation is not changing

            – Pub Insta
            Nov 19 '18 at 15:35











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:37











          • When I back press on B1 it's going to home fragment, but the selected item in botttom navigation is still pointing to B

            – Pub Insta
            Nov 19 '18 at 16:46











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:52











          • I have checked the updated answer it's not working

            – Pub Insta
            Nov 19 '18 at 16:57



















          • It's working fine but on backpressed the selected item in bottomnavigation is not changing

            – Pub Insta
            Nov 19 '18 at 15:35











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:37











          • When I back press on B1 it's going to home fragment, but the selected item in botttom navigation is still pointing to B

            – Pub Insta
            Nov 19 '18 at 16:46











          • Please check the updated answer @PubInsta

            – Rabindra Khadka
            Nov 19 '18 at 16:52











          • I have checked the updated answer it's not working

            – Pub Insta
            Nov 19 '18 at 16:57

















          It's working fine but on backpressed the selected item in bottomnavigation is not changing

          – Pub Insta
          Nov 19 '18 at 15:35





          It's working fine but on backpressed the selected item in bottomnavigation is not changing

          – Pub Insta
          Nov 19 '18 at 15:35













          Please check the updated answer @PubInsta

          – Rabindra Khadka
          Nov 19 '18 at 16:37





          Please check the updated answer @PubInsta

          – Rabindra Khadka
          Nov 19 '18 at 16:37













          When I back press on B1 it's going to home fragment, but the selected item in botttom navigation is still pointing to B

          – Pub Insta
          Nov 19 '18 at 16:46





          When I back press on B1 it's going to home fragment, but the selected item in botttom navigation is still pointing to B

          – Pub Insta
          Nov 19 '18 at 16:46













          Please check the updated answer @PubInsta

          – Rabindra Khadka
          Nov 19 '18 at 16:52





          Please check the updated answer @PubInsta

          – Rabindra Khadka
          Nov 19 '18 at 16:52













          I have checked the updated answer it's not working

          – Pub Insta
          Nov 19 '18 at 16:57





          I have checked the updated answer it's not working

          – Pub Insta
          Nov 19 '18 at 16:57




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53364859%2fmaintaining-backstack-in-bottom-navaigation%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()