Home > OS >  (Kotlin)why when i press back form fragment app is closed? i had one activity
(Kotlin)why when i press back form fragment app is closed? i had one activity

Time:12-11

 private fun navBottomClick() {
        bottomNavigationView?.setOnItemSelectedListener {
            when(it.itemId){
               R.id.workout ->{
                  val fragmentTransaction:FragmentTransaction = supportFragmentManager.beginTransaction()
                   fragmentTransaction.replace(R.id.container,WorkoutFragment(),"WORKOUT")
                   //fragmentTransaction.addToBackStack("WORKOUT")
                   fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
                   fragmentTransaction.commit()
               }
                R.id.steps ->{
                    intent = Intent(this,StepsActivity::class.java)
                    startActivity(intent)
                }
            }
            true
        }
    }

    override fun onBackPressed() {
        super.onBackPressed()

        }
    }

when i pressed back my app is closed i want to make it go form fragment to the main acitvity plz help

CodePudding user response:

You have misunderstood the concept of Fragments and Activity . The issue you facing of the application getting close on navigating back from the fragment because it is the last fragment present in the stack .

Concept : Basically , an Activity acts as an container for all of your Fragments . So , you create an activity and create a Fragment-Container / FrameLayout in that Activity wherein you assign the Fragments. So , Consider this example :

enter image description here

Here you can see, there are two fragments and both of them are placed in only one Activity . So this clarifies that Activity acts as an container for fragments .

What causes the Issue of Application being closed : So what happens is when you navigate back from the last fragment , since it does not have anywhere to go back it closes the application .

Solution : So if you want to get your Activity on navigating back on the last fragment to the Activity then , you need to override the popBackStack() method on the last Fragment and in there you need to disable the FragmentContainer / FrameLayout view, in this way you can get your activity back . Recommended Solution : Move all the stuffs that you want to show at the end from your Activity to another Fragment and popBackStack() to that Fragment, doing such maintains the Single Activity principle .

CodePudding user response:

You should have a popbackstack to send the screen correctly. Check if your fragment has implemented inside of this activity, if yes, really that will be closed. Don't forget that fragment is inside of the one activity.

  • Related