Я хочу построить навигацию точно так же, как приложение Gmail.Позвольте мне уточнить, что я имею в виду под этим.Приложение Gmail имеет (по крайней мере, судя по всему) 1 активность хостинга, множество фрагментов и блок навигации.
Мне нужно, чтобы панель инструментов работала так же, как в приложении Gmail.
Когдавнутри фрагмента списка (входящие, важные и т. д.) есть эта панель инструментов: вы можете видеть, что навигационная панель переключается там, и она работает как положено.
Когдапереместился к фрагменту одного элемента на этой панели инструментов: Обратите внимание, что кнопка «Назад» ведет себя так же, как и кнопка «Назад» (переход к предыдущему виду).А навигационный ящик все еще можно использовать, проводя со стороны.
Я пытаюсь воспроизвести это поведение следующим образом: я раздуваю меню панели инструментов для каждогофрагмент по отдельности
// both inside list and item fragments
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
// inside list fragment
override fun onCreateOptionsMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.list_toolbar, menu)
super.onCreateOptionsMenu(menu, menuInflater)
}
// inside item fragment
override fun onCreateOptionsMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.item_toolbar, menu)
super.onCreateOptionsMenu(menu, menuInflater)
}
Теперь, так как навигационный ящик должен использоваться из всех фрагментов.Это должно быть помещено в представление активности хостинга (я думаю).И вот как я его инициализирую
override fun onCreate(savedInstanceState: Bundle?) {
// inside hosting activity view
ActionBarDrawerToggle(this, drawer, toolbar, R.string.open, R.string.close).apply {
addDrawerListener(this)
syncState()
}
}
Это работает, и я получаю рабочий навигационный ящик.Однако, когда я перехожу к фрагменту элемента.Кнопка «Назад» на панели инструментов работает как кнопка переключения ящика навигации, показывая и скрывая ящик вместо перехода назад.
PS.Вот как я добавляю кнопку «Назад» внутри фрагмента элемента при методе «Создать»
(activity as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true)
(activity as AppCompatActivity).supportActionBar?.setDisplayShowHomeEnabled(true)
Таким образом, реальный вопрос заключается в том, как заставить кнопку «Назад» вести себя так, как следует, вместо переключения ящика навигации?