11package com.example.backstack_bottomnavigation
22
3- import android.os.Build
43import androidx.appcompat.app.AppCompatActivity
54import android.os.Bundle
65import android.util.Log
76import android.view.MenuItem
8- import android.widget.Toast
9- import androidx.annotation.RequiresApi
107import androidx.fragment.app.Fragment
118import androidx.fragment.app.FragmentManager
12- import com.example.backstack_bottomnavigation.R
139import com.example.backstack_bottomnavigation.fragments.HomeFragment
1410import com.example.backstack_bottomnavigation.fragments.MidFragment
1511import com.example.backstack_bottomnavigation.fragments.ProfileFragment
1612import com.google.android.material.bottomnavigation.BottomNavigationView
17- import com.google.android.material.navigation.NavigationView
1813import java.util.*
1914
2015 class MainActivity : AppCompatActivity () {
@@ -28,7 +23,7 @@ import java.util.*
2823 super .onCreate(savedInstanceState)
2924 setContentView(R .layout.activity_main)
3025// doWork()
31- init ()
26+ init (savedInstanceState )
3227 }
3328
3429
@@ -56,12 +51,55 @@ import java.util.*
5651
5752 }
5853
59- private fun init () {
60- homeFragment= HomeFragment ()
61- midFragment= MidFragment ()
62- profileFragment= ProfileFragment ()
54+ private fun init (savedInstanceState : Bundle ? ) {
6355
6456 bottomNavigation= findViewById(R .id.btm_nav)
57+ if (savedInstanceState== null ){
58+ homeFragment= HomeFragment ()
59+ midFragment= MidFragment ()
60+ profileFragment= ProfileFragment ()
61+ updateFragment(homeFragment," home" )
62+ }else {
63+
64+ currentTag= savedInstanceState.getString(" currentTag" )!!
65+ currentFragment= supportFragmentManager.findFragmentByTag(currentTag)
66+ if (supportFragmentManager.findFragmentByTag(" home" )== null ){
67+ homeFragment= HomeFragment ()
68+ }else {
69+ homeFragment= supportFragmentManager.findFragmentByTag(" home" )!!
70+ }
71+ if (supportFragmentManager.findFragmentByTag(" mid" )== null ){
72+ midFragment= MidFragment ()
73+ }else {
74+ midFragment= supportFragmentManager.findFragmentByTag(" mid" )!!
75+ }
76+ if (supportFragmentManager.findFragmentByTag(" profile" )== null ){
77+ profileFragment= ProfileFragment ()
78+ }else {
79+ profileFragment= supportFragmentManager.findFragmentByTag(" profile" )!!
80+ }
81+
82+ when (currentTag){
83+ " home" -> {
84+ updateFragment(homeFragment," home" )
85+ bottomNavigation.selectedItemId= R .id.action_home
86+
87+ }
88+ " mid" -> {
89+ updateFragment(midFragment," mid" )
90+ bottomNavigation.selectedItemId= R .id.action_mid
91+
92+ }
93+ " profile" -> {
94+ updateFragment(profileFragment," profile" )
95+ bottomNavigation.selectedItemId= R .id.action_profile
96+
97+ }
98+
99+ }
100+
101+ }
102+
65103 bottomNavigation.setOnNavigationItemSelectedListener(object : BottomNavigationView .OnNavigationItemSelectedListener {
66104 override fun onNavigationItemSelected (item : MenuItem ): Boolean {
67105 when (item.itemId){
@@ -87,7 +125,7 @@ return false
87125 }
88126
89127 })
90- updateFragment(homeFragment, " home " )
128+
91129 }
92130
93131 fun updateFragment (fragment : Fragment , tag : String ){
@@ -172,5 +210,10 @@ return false
172210
173211
174212
213+ }
214+
215+ override fun onSaveInstanceState (outState : Bundle ) {
216+ outState.putString(" currentTag" ,currentTag)
217+ super .onSaveInstanceState(outState)
175218 }
176219}
0 commit comments