Find previous active fragment












0














I have 4 fragments. Following is the navigation flow




[Fragment 1] -> [Fragment 2] -> [Fragment 3]



[Fragment 4] -> [Fragment 3]




If user goes to fragment 3 from 4 (i.e [Fragment 4] -> [Fragment 3]) on back press of [Fragment 3] it should go to [Fragment 1].



I think if I am able to find the previous fragment then It will be easy to redirect to [fragment 1]. Is there any way I can find what was the previous fragment that has been replaced?



I have tried fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1) but is shows only one entry that is of the current fragment.



Fragment manager looks like this.



FragmentManager Object



onBackPressed of Fragment 3 it I did something like this.



override fun onBackPressed(): Boolean {
args.host.hideKeyboard()

if (redirectToProductList) {
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
}
return args.host.childFragmentManager.popBackStackImmediate()
}









share|improve this question







New contributor




Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • Possible duplicate of onBackPressed change tabs in android
    – Ashish
    2 days ago
















0














I have 4 fragments. Following is the navigation flow




[Fragment 1] -> [Fragment 2] -> [Fragment 3]



[Fragment 4] -> [Fragment 3]




If user goes to fragment 3 from 4 (i.e [Fragment 4] -> [Fragment 3]) on back press of [Fragment 3] it should go to [Fragment 1].



I think if I am able to find the previous fragment then It will be easy to redirect to [fragment 1]. Is there any way I can find what was the previous fragment that has been replaced?



I have tried fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1) but is shows only one entry that is of the current fragment.



Fragment manager looks like this.



FragmentManager Object



onBackPressed of Fragment 3 it I did something like this.



override fun onBackPressed(): Boolean {
args.host.hideKeyboard()

if (redirectToProductList) {
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
}
return args.host.childFragmentManager.popBackStackImmediate()
}









share|improve this question







New contributor




Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • Possible duplicate of onBackPressed change tabs in android
    – Ashish
    2 days ago














0












0








0







I have 4 fragments. Following is the navigation flow




[Fragment 1] -> [Fragment 2] -> [Fragment 3]



[Fragment 4] -> [Fragment 3]




If user goes to fragment 3 from 4 (i.e [Fragment 4] -> [Fragment 3]) on back press of [Fragment 3] it should go to [Fragment 1].



I think if I am able to find the previous fragment then It will be easy to redirect to [fragment 1]. Is there any way I can find what was the previous fragment that has been replaced?



I have tried fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1) but is shows only one entry that is of the current fragment.



Fragment manager looks like this.



FragmentManager Object



onBackPressed of Fragment 3 it I did something like this.



override fun onBackPressed(): Boolean {
args.host.hideKeyboard()

if (redirectToProductList) {
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
}
return args.host.childFragmentManager.popBackStackImmediate()
}









share|improve this question







New contributor




Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I have 4 fragments. Following is the navigation flow




[Fragment 1] -> [Fragment 2] -> [Fragment 3]



[Fragment 4] -> [Fragment 3]




If user goes to fragment 3 from 4 (i.e [Fragment 4] -> [Fragment 3]) on back press of [Fragment 3] it should go to [Fragment 1].



I think if I am able to find the previous fragment then It will be easy to redirect to [fragment 1]. Is there any way I can find what was the previous fragment that has been replaced?



I have tried fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1) but is shows only one entry that is of the current fragment.



Fragment manager looks like this.



FragmentManager Object



onBackPressed of Fragment 3 it I did something like this.



override fun onBackPressed(): Boolean {
args.host.hideKeyboard()

if (redirectToProductList) {
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
}
return args.host.childFragmentManager.popBackStackImmediate()
}






android android-fragments android-fragmentmanager






share|improve this question







New contributor




Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question







New contributor




Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question






New contributor




Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 days ago









Hammad Arshad

1




1




New contributor




Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • Possible duplicate of onBackPressed change tabs in android
    – Ashish
    2 days ago


















  • Possible duplicate of onBackPressed change tabs in android
    – Ashish
    2 days ago
















Possible duplicate of onBackPressed change tabs in android
– Ashish
2 days ago




Possible duplicate of onBackPressed change tabs in android
– Ashish
2 days ago












3 Answers
3






active

oldest

votes


















0














I have already posted this issue and Answer available there please try to search



Source :



Link



override fun onBackPressed() {
if (tabLayout.selectedTabPosition != 0) {
tabLayout.getTabAt(0)?.select()
} else {
super.onBackPressed()
}
}





share|improve this answer





























    0














    I resolved the problem. I was not adding fragment into backstack.



    fragmentManager.beginTransaction()
    .addToBackStack(newFragment.javaClass.name)
    .commit()


    I then found previous fragment like this.



    override fun onBackPressed(): Boolean {
    args.host.hideKeyboard()
    val index = args.host.fragmentManager.backStackEntryCount - 2
    if (index >= 0) {
    val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
    if (prevFrag.name == SearchContainerPresenter::class.java.name)
    args.host.activity?.let {
    if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
    openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
    return true
    }
    }
    else
    return args.host.childFragmentManager.popBackStackImmediate()
    }
    return args.host.childFragmentManager.popBackStackImmediate()
    }





    share|improve this answer








    New contributor




    Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.


























      0














      You can user listener like this,



      supportFragmentManager.addOnBackStackChangedListener {
      val fragment = supportFragmentManager.findFragmentById(R.id.container)
      //Write your logic here
      }





      share|improve this answer





















        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
        });


        }
        });






        Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.










        draft saved

        draft discarded


















        StackExchange.ready(
        function () {
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53944917%2ffind-previous-active-fragment%23new-answer', 'question_page');
        }
        );

        Post as a guest















        Required, but never shown

























        3 Answers
        3






        active

        oldest

        votes








        3 Answers
        3






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        0














        I have already posted this issue and Answer available there please try to search



        Source :



        Link



        override fun onBackPressed() {
        if (tabLayout.selectedTabPosition != 0) {
        tabLayout.getTabAt(0)?.select()
        } else {
        super.onBackPressed()
        }
        }





        share|improve this answer


























          0














          I have already posted this issue and Answer available there please try to search



          Source :



          Link



          override fun onBackPressed() {
          if (tabLayout.selectedTabPosition != 0) {
          tabLayout.getTabAt(0)?.select()
          } else {
          super.onBackPressed()
          }
          }





          share|improve this answer
























            0












            0








            0






            I have already posted this issue and Answer available there please try to search



            Source :



            Link



            override fun onBackPressed() {
            if (tabLayout.selectedTabPosition != 0) {
            tabLayout.getTabAt(0)?.select()
            } else {
            super.onBackPressed()
            }
            }





            share|improve this answer












            I have already posted this issue and Answer available there please try to search



            Source :



            Link



            override fun onBackPressed() {
            if (tabLayout.selectedTabPosition != 0) {
            tabLayout.getTabAt(0)?.select()
            } else {
            super.onBackPressed()
            }
            }






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 2 days ago









            Ashish

            322111




            322111

























                0














                I resolved the problem. I was not adding fragment into backstack.



                fragmentManager.beginTransaction()
                .addToBackStack(newFragment.javaClass.name)
                .commit()


                I then found previous fragment like this.



                override fun onBackPressed(): Boolean {
                args.host.hideKeyboard()
                val index = args.host.fragmentManager.backStackEntryCount - 2
                if (index >= 0) {
                val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
                if (prevFrag.name == SearchContainerPresenter::class.java.name)
                args.host.activity?.let {
                if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
                openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
                return true
                }
                }
                else
                return args.host.childFragmentManager.popBackStackImmediate()
                }
                return args.host.childFragmentManager.popBackStackImmediate()
                }





                share|improve this answer








                New contributor




                Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.























                  0














                  I resolved the problem. I was not adding fragment into backstack.



                  fragmentManager.beginTransaction()
                  .addToBackStack(newFragment.javaClass.name)
                  .commit()


                  I then found previous fragment like this.



                  override fun onBackPressed(): Boolean {
                  args.host.hideKeyboard()
                  val index = args.host.fragmentManager.backStackEntryCount - 2
                  if (index >= 0) {
                  val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
                  if (prevFrag.name == SearchContainerPresenter::class.java.name)
                  args.host.activity?.let {
                  if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
                  openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
                  return true
                  }
                  }
                  else
                  return args.host.childFragmentManager.popBackStackImmediate()
                  }
                  return args.host.childFragmentManager.popBackStackImmediate()
                  }





                  share|improve this answer








                  New contributor




                  Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.





















                    0












                    0








                    0






                    I resolved the problem. I was not adding fragment into backstack.



                    fragmentManager.beginTransaction()
                    .addToBackStack(newFragment.javaClass.name)
                    .commit()


                    I then found previous fragment like this.



                    override fun onBackPressed(): Boolean {
                    args.host.hideKeyboard()
                    val index = args.host.fragmentManager.backStackEntryCount - 2
                    if (index >= 0) {
                    val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
                    if (prevFrag.name == SearchContainerPresenter::class.java.name)
                    args.host.activity?.let {
                    if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
                    openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
                    return true
                    }
                    }
                    else
                    return args.host.childFragmentManager.popBackStackImmediate()
                    }
                    return args.host.childFragmentManager.popBackStackImmediate()
                    }





                    share|improve this answer








                    New contributor




                    Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.









                    I resolved the problem. I was not adding fragment into backstack.



                    fragmentManager.beginTransaction()
                    .addToBackStack(newFragment.javaClass.name)
                    .commit()


                    I then found previous fragment like this.



                    override fun onBackPressed(): Boolean {
                    args.host.hideKeyboard()
                    val index = args.host.fragmentManager.backStackEntryCount - 2
                    if (index >= 0) {
                    val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
                    if (prevFrag.name == SearchContainerPresenter::class.java.name)
                    args.host.activity?.let {
                    if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
                    openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
                    return true
                    }
                    }
                    else
                    return args.host.childFragmentManager.popBackStackImmediate()
                    }
                    return args.host.childFragmentManager.popBackStackImmediate()
                    }






                    share|improve this answer








                    New contributor




                    Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.









                    share|improve this answer



                    share|improve this answer






                    New contributor




                    Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.









                    answered yesterday









                    Hammad Arshad

                    1




                    1




                    New contributor




                    Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.





                    New contributor





                    Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.






                    Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.























                        0














                        You can user listener like this,



                        supportFragmentManager.addOnBackStackChangedListener {
                        val fragment = supportFragmentManager.findFragmentById(R.id.container)
                        //Write your logic here
                        }





                        share|improve this answer


























                          0














                          You can user listener like this,



                          supportFragmentManager.addOnBackStackChangedListener {
                          val fragment = supportFragmentManager.findFragmentById(R.id.container)
                          //Write your logic here
                          }





                          share|improve this answer
























                            0












                            0








                            0






                            You can user listener like this,



                            supportFragmentManager.addOnBackStackChangedListener {
                            val fragment = supportFragmentManager.findFragmentById(R.id.container)
                            //Write your logic here
                            }





                            share|improve this answer












                            You can user listener like this,



                            supportFragmentManager.addOnBackStackChangedListener {
                            val fragment = supportFragmentManager.findFragmentById(R.id.container)
                            //Write your logic here
                            }






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered yesterday









                            Akash Dubey

                            560626




                            560626






















                                Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.










                                draft saved

                                draft discarded


















                                Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.













                                Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.












                                Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.
















                                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.





                                Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                                Please pay close attention to the following guidance:


                                • 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%2f53944917%2ffind-previous-active-fragment%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







                                Popular posts from this blog

                                Mossoró

                                Error while reading .h5 file using the rhdf5 package in R

                                Pushsharp Apns notification error: 'InvalidToken'