Files
Android-key-of-love/app/src/main/java/com/example/myapplication/MainActivity.kt

72 lines
2.5 KiB
Kotlin
Raw Normal View History

2025-11-26 16:47:15 +08:00
package com.example.myapplication
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.navigation.NavController
import androidx.navigation.NavDestination
class MainActivity : AppCompatActivity() {
private lateinit var bottomNav: BottomNavigationView
private lateinit var navController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 1. 找到 NavHostFragment
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
navController = navHostFragment.navController
// 2. 找到 BottomNavigationView
bottomNav = findViewById(R.id.bottom_nav)
// 3. 绑定导航控制器(负责切换 Fragment、保持选中状态
bottomNav.setupWithNavController(navController)
// 4. 取消图标颜色 tint —— 使用原图标颜色
bottomNav.itemIconTintList = null
// 5. 添加导航监听(用于某些 Fragment 隐藏底部导航栏)
navController.addOnDestinationChangedListener { _, destination, _ ->
// 只有这些页面显示 BottomNav
val pagesWithBottomNav = setOf(
R.id.mineFragment,
R.id.homeFragment,
R.id.shopFragment
)
if (destination.id in pagesWithBottomNav) {
bottomNav.visibility = View.VISIBLE
} else {
bottomNav.visibility = View.GONE
2025-11-26 16:47:15 +08:00
}
}
2025-12-05 20:48:22 +08:00
// 6. 检查是否有导航参数,处理从键盘跳转过来的请求
handleNavigationFromIntent()
}
private fun handleNavigationFromIntent() {
val navigateTo = intent.getStringExtra("navigate_to")
if (navigateTo == "recharge_fragment") {
// 延迟执行导航,确保导航控制器已经准备好
bottomNav.post {
try {
navController.navigate(R.id.action_global_rechargeFragment)
} catch (e: Exception) {
// 如果导航失败,记录错误日志
android.util.Log.e("MainActivity", "Failed to navigate to recharge fragment", e)
}
}
}
2025-11-26 16:47:15 +08:00
}
}