完善
This commit is contained in:
@@ -3,11 +3,16 @@ package com.example.myapplication
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
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
|
||||
import com.example.myapplication.network.AuthEventBus
|
||||
import com.example.myapplication.network.AuthEvent
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
@@ -18,6 +23,23 @@ class MainActivity : AppCompatActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main)
|
||||
|
||||
lifecycleScope.launch {
|
||||
AuthEventBus.events.collectLatest { event ->
|
||||
if (event is AuthEvent.TokenExpired) {
|
||||
val navController = (supportFragmentManager
|
||||
.findFragmentById(R.id.nav_host_fragment) as NavHostFragment)
|
||||
.navController
|
||||
|
||||
// 避免重复跳转(比如已经在登录页)
|
||||
if (navController.currentDestination?.id != R.id.loginFragment) {
|
||||
navController.navigate(R.id.action_global_loginFragment)
|
||||
}
|
||||
} else if (event is AuthEvent.GenericError) {
|
||||
android.widget.Toast.makeText(this@MainActivity, "${event.message}", android.widget.Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 1. 找到 NavHostFragment
|
||||
val navHostFragment =
|
||||
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
||||
|
||||
Reference in New Issue
Block a user