Условные действия Up и Back с Android Библиотека компонентов навигации - PullRequest
0 голосов
/ 19 марта 2020

Как обеспечить условную навигацию вверх и назад при использовании библиотеки компонентов навигации Android?

Например, в моем приложении есть книга контактов. При создании нового контакта, если пользователь нажимает обратно, прежде чем заполнять какую-либо информацию, я бы хотел go вернуться к списку контактов. Если пользователь заполнил информацию, я бы хотел go для подробного просмотра этого контакта.

1 Ответ

0 голосов
/ 19 марта 2020

В вашем фрагменте onCreate добавьте обратный вызов OnBackPressedCallback:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    requireActivity().onBackPressedDispatcher.addCallback(this) {
        backOrUpPressed()
    }
}

Затем, после настройки панели инструментов с помощью NavController, установите NavigationOnClickListener:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    // Setup the view

    setSupportActionBar(toolbar)
    toolbar.setupWithNavController(findNavController(), AppBarConfiguration(findNavController().graph))
    toolbar.setNavigationOnClickListener { backOrUpPressed() }
}

Затем реализуйте свою собственную логику Up / Back c в backorUpPressed()

...