package com.example.shoeshop.feature.main import android.os.Bundle import androidx.lifecycle.LiveData import androidx.lifecycle.Observer import androidx.navigation.NavController import androidx.navigation.ui.setupActionBarWithNavController import com.example.shoeshop.R import com.example.shoeshop.common.NikeActivity import com.google.android.material.bottomnavigation.BottomNavigationView import com.example.shoeshop.common.setupWithNavController class MainActivity : NikeActivity() { private var currentNavController: LiveData? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) if (savedInstanceState == null) { setupBottomNavigationBar() } // Else, need to wait for onRestoreInstanceState } override fun onRestoreInstanceState(savedInstanceState: Bundle) { super.onRestoreInstanceState(savedInstanceState) // Now that BottomNavigationBar has restored its instance state // and its selectedItemId, we can proceed with setting up the // BottomNavigationBar with Navigation setupBottomNavigationBar() } /** * Called on first creation and when restoring state. */ private fun setupBottomNavigationBar() { val bottomNavigationView = findViewById(R.id.bottomNavigationMain) val navGraphIds = listOf(R.navigation.home, R.navigation.cart, R.navigation.profile) // Setup the bottom navigation view with a list of navigation graphs val controller = bottomNavigationView.setupWithNavController( navGraphIds = navGraphIds, fragmentManager = supportFragmentManager, containerId = R.id.nav_host_container, intent = intent ) currentNavController = controller } override fun onSupportNavigateUp(): Boolean { return currentNavController?.value?.navigateUp() ?: false } }