[Desc]fix back press

main
AlexWang 2 years ago
parent 0b88463c25
commit 65cc6c2d5f

@ -44,7 +44,6 @@ class MainActivity : ComponentActivity() {
private fun addBackListener() {
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (NavigationUtil.backAndReturnsIsLastPage()) {
//是主页
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(this@MainActivity, "再点一次退出!", Toast.LENGTH_SHORT)
@ -55,7 +54,6 @@ class MainActivity : ComponentActivity() {
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
}
}
}
})
}
}

@ -13,8 +13,6 @@ import androidx.navigation.*
* @CreateDate: 2021/8/27 10:06
*/
object NavigationUtil {
var currentScreen: ModelPath? by mutableStateOf(ModelPath.Home)
val navList = mutableStateListOf(currentScreen)
@SuppressLint("StaticFieldLeak")
lateinit var navHostController: NavHostController
@ -23,18 +21,14 @@ object NavigationUtil {
* 跳转到某个页面
*/
fun to(screenName: ModelPath) {
currentScreen = screenName
navHostController.navigate(screenName.route)
navList.add(screenName)
}
/**
* 跳转到某个页面带参数
*/
fun toBundle(screenName: ModelPath, bundle: Bundle) {
currentScreen = screenName
navHostController.navigate(screenName.route, bundle)
navList.add(screenName)
}
private fun NavController.navigate(
@ -56,19 +50,4 @@ object NavigationUtil {
navigate(route, navOptions, navigatorExtras)
}
}
/**
* 返回到上一页
*/
fun backAndReturnsIsLastPage(): Boolean {
return if (navList.size == 1) {
//当前是最后一页了返回true
true
} else {
navList.removeLast()
currentScreen = navList.last()
navHostController.navigateUp()
false
}
}
}

Loading…
Cancel
Save