mirror of
https://github.com/fcitx5-android/fcitx5-android.git
synced 2026-08-02 04:44:35 +08:00
Use standard support action bar navigation in MainActivity
This commit is contained in:
parent
0eb0e0699b
commit
ced739b8b7
@ -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<NavHostFragment>().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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user