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
|
windowInsets
|
||||||
}
|
}
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
setSupportActionBar(binding.toolbar)
|
||||||
// always show toolbar back arrow icon
|
// 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
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
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
|
|
||||||
setupToolbarMenu(binding.toolbar.menu)
|
setupToolbarMenu(binding.toolbar.menu)
|
||||||
navController = binding.navHostFragment.getFragment<NavHostFragment>().navController
|
navController = binding.navHostFragment.getFragment<NavHostFragment>().navController
|
||||||
navController.graph = SettingsRoute.createGraph(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) {
|
viewModel.toolbarTitle.observe(this) {
|
||||||
binding.toolbar.title = it
|
binding.toolbar.title = it
|
||||||
}
|
}
|
||||||
@ -101,6 +89,16 @@ class MainActivity : AppCompatActivity() {
|
|||||||
processIntent(intent)
|
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?) {
|
private fun processIntent(intent: Intent?) {
|
||||||
val action = intent?.action ?: return
|
val action = intent?.action ?: return
|
||||||
when (action) {
|
when (action) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user