Мое приложение имеет одну активность и несколько фрагментов. Компонент навигации был использован для навигации, и это не очень сложно. Также BottomNavigationComponent был использован для нижней навигации. Есть три фрагмента верхнего уровня, к которым можно получить доступ через нижнюю навигацию, и есть меню опций в одном из фрагментов верхнего уровня. Также это не сложное меню тоже; есть только один пункт.
Итак, это не имеет большого значения и созданное меню, как показано ниже.
notifications_menu
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/dismiss_all"
android:title="@string/dismiss_all"
android:orderInCategory="10"
app:showAsAction="ifRoom" />
</menu>
NotificationsFragment.kt
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewModel =
ViewModelProvider.NewInstanceFactory().create(NotificationsViewModel::class.java)
setHasOptionsMenu(true)
(activity as MainActivity).supportActionBar?.setDisplayHomeAsUpEnabled(false)
(activity as MainActivity).supportActionBar?.setDisplayShowHomeEnabled(false)
//other stuff
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.notifications_menu, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val id = item.itemId
if (id == R.id.dismiss_all) {
// there is no code here yet
return true
}
return super.onOptionsItemSelected(item);
}
И вот результат ...
Проблема, как вы можете видеть выше, когда я нажимаю кнопку «Отклонить все», приводит к переходу к исходному фрагменту. Но я не мог понять почему?