diff --git a/app/src/main/java/org/fcitx/fcitx5/android/ui/main/MainActivity.kt b/app/src/main/java/org/fcitx/fcitx5/android/ui/main/MainActivity.kt index e7650d03..56490692 100644 --- a/app/src/main/java/org/fcitx/fcitx5/android/ui/main/MainActivity.kt +++ b/app/src/main/java/org/fcitx/fcitx5/android/ui/main/MainActivity.kt @@ -60,24 +60,12 @@ class MainActivity : AppCompatActivity() { windowInsets } setContentView(binding.root) + setSupportActionBar(binding.toolbar) // always show toolbar back arrow icon - // https://android.googlesource.com/platform/frameworks/support/+/32e643112d0217619237a0d7101b50919c6caf51/navigation/navigation-ui/src/main/java/androidx/navigation/ui/AbstractAppBarOnDestinationChangedListener.kt#80 - binding.toolbar.navigationIcon = DrawerArrowDrawable(this).apply { progress = 1f } - // show menu icon and other action icons on toolbar - // don't use `setSupportActionBar(binding.toolbar)` here, - // because navController would change toolbar title, we need to control it by ourselves + supportActionBar?.setDisplayHomeAsUpEnabled(true) setupToolbarMenu(binding.toolbar.menu) navController = binding.navHostFragment.getFragment().navController navController.graph = SettingsRoute.createGraph(navController) - binding.toolbar.setNavigationOnClickListener { - // prevent navigate up when child fragment has enabled `OnBackPressedCallback` - if (onBackPressedDispatcher.hasEnabledCallbacks()) { - onBackPressedDispatcher.onBackPressed() - return@setNavigationOnClickListener - } - // "minimize" the activity if we can't go back - navController.navigateUp() || onSupportNavigateUp() || moveTaskToBack(false) - } viewModel.toolbarTitle.observe(this) { binding.toolbar.title = it } @@ -101,6 +89,16 @@ class MainActivity : AppCompatActivity() { processIntent(intent) } + override fun onSupportNavigateUp(): Boolean { + // prevent navigate up when child fragment has enabled `OnBackPressedCallback` + if (onBackPressedDispatcher.hasEnabledCallbacks()) { + onBackPressedDispatcher.onBackPressed() + return true + } + // "minimize" the activity if we can't go back + return navController.navigateUp() || super.onSupportNavigateUp() || moveTaskToBack(false) + } + private fun processIntent(intent: Intent?) { val action = intent?.action ?: return when (action) {