[Desc]fix back press

main
AlexWang 2 years ago
parent 0b88463c25
commit 65cc6c2d5f

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

@ -13,8 +13,6 @@ import androidx.navigation.*
* @CreateDate: 2021/8/27 10:06 * @CreateDate: 2021/8/27 10:06
*/ */
object NavigationUtil { object NavigationUtil {
var currentScreen: ModelPath? by mutableStateOf(ModelPath.Home)
val navList = mutableStateListOf(currentScreen)
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
lateinit var navHostController: NavHostController lateinit var navHostController: NavHostController
@ -23,18 +21,14 @@ object NavigationUtil {
* 跳转到某个页面 * 跳转到某个页面
*/ */
fun to(screenName: ModelPath) { fun to(screenName: ModelPath) {
currentScreen = screenName
navHostController.navigate(screenName.route) navHostController.navigate(screenName.route)
navList.add(screenName)
} }
/** /**
* 跳转到某个页面带参数 * 跳转到某个页面带参数
*/ */
fun toBundle(screenName: ModelPath, bundle: Bundle) { fun toBundle(screenName: ModelPath, bundle: Bundle) {
currentScreen = screenName
navHostController.navigate(screenName.route, bundle) navHostController.navigate(screenName.route, bundle)
navList.add(screenName)
} }
private fun NavController.navigate( private fun NavController.navigate(
@ -56,19 +50,4 @@ object NavigationUtil {
navigate(route, navOptions, navigatorExtras) 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