Процесс регистрации с расширенным примером навигации - PullRequest
0 голосов
/ 25 мая 2019

В настоящее время я использую навигацию снизу, как в расширенный пример навигации , я пытаюсь направить пользователя в поток регистрации, если пользователь не аутентифицирован.Я использую следующий код в выбранном по умолчанию фрагменте, чтобы направить пользователя для регистрации потока (login_nav_graph), если они не аутентифицированы.

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)


        if(!authenticated){
            view.findNavController().navigate(R.id.action_frag1Fragment_to_login_nav_graph)
        }
    }

Но есть несколько проблем

  • Показывает назадкнопка, когда пользователь в потоке регистрации
  • В потоке регистрации отображается нижняя навигация

Эти проблемы имеют смысл, Причины:

  • с момента потока регистрации (login_nav_graph) вложен в нижнюю навигационную панель. Первые элементы (выбраны по умолчанию). График навигации.
  • Нижняя навигационная панель имеет макет activity_main.

Итак, как мне интегрировать поток регистрациив расширенный пример навигации и преодолеть вышеупомянутые проблемы с лучшим подходом?

Примечание:

код очень похож на расширенный пример навигации, я ввел отдельный навигационный граф для потока регистрации под названием login_nav_graph и вышеупомянутый код в неправильно выбранном фрагменте

1 Ответ

0 голосов
/ 25 мая 2019

Исправлена ​​проблема с помощью следующих действий.

  1. Добавить login_nav_graph к графу навигации, который содержит выбранный по умолчанию фрагмент в виде вложенного графика навигации.
  2. Создайте action/path из выбранного по умолчанию фрагмента (frag1Fragment) в login_nav_graph и установите поведение действия Pop To для навигационного графа frag1Fragment.

  3. Создайте следующие два метода внутри MainActivity, чтобы переключить видимость панели действий и нижней навигационной панели.

    fun toggleBottomNavVisibility(){
    
        if(bottom_nav.visibility == View.VISIBLE){
            bottom_nav.visibility = View.GONE
        }else{
            bottom_nav.visibility = View.VISIBLE
        }
    }
    

...

fun toggleActionBarVisibility(){

        if(supportActionBar!!.isShowing){
            supportActionBar?.hide()
        }
        else{
            supportActionBar?.show()
        }
}
  1. Обновите onViewCreated метод frag1Fragment следующим образом

...

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

    if(!authenticated){

        // hide bottom navigation and action bar
        val activity = activity as MainActivity
        activity.toggleBottomNavVisibility()
        activity.toggleActionBarVisibility()

       findNavController().navigate(R.id.action_frag1Fragment_to_login_nav_graph)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...