Вход в систему - компонент архитектуры навигации - PullRequest
0 голосов
/ 03 октября 2018

Я реализовал условную навигацию в свой элемент LoginFragment с компонентом архитектуры навигации Android.Проблема, с которой я столкнулся сейчас, заключается в том, что я хотел бы скрыть кнопку вверх на панели инструментов и отключить любую навигацию в приложении, пока пользователь не вошел в систему.

Я хотел бы иметь возможность реализоватьэто с подходом с одним действием, где Activity устанавливает пользовательский интерфейс навигации в приложении и navController, как в демонстрационной версии android sunflower, и назначениями навигации являются Фрагменты.

Я реализовал условную навигацию, как описано здесь: Компонент архитектуры навигации - экран входа в систему

Как правильно реализовать скрытие навигации и кнопки вверх на экране входа в систему с помощью компонента архитектуры навигации?

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Мой метод - добавить страницу входа в корневой набор

    val navController = findNavController(R.id.main_nav_host)
    val appBarConfiguration = AppBarConfiguration(setOf(R.id.home_dest, 
        R.id.user_dest,R.id.login_dest))
    toolbar.setupWithNavController(navController, appBarConfiguration)

Поэтому, когда вы находитесь на странице входа, кнопка возврата отсутствует.

Кнопка возврата системы может переопределить onBackPressed()

  override fun onBackPressed() {
    if (findNavController(R.id.main_nav_host).currentDestination?.id != R.id.next_dest)
      super.onBackPressed()
    }
  }

Извините за мой английский

0 голосов
/ 10 декабря 2018

Я не знаю точно, что вы имеете в виду, скрывая навигацию, но я предполагаю, что вы имеете в виду скрытие макета ящика.Чтобы скрыть кнопку вверх и заблокировать ящик, добавьте следующее в onCreate вашего MainActivity.Я использую Kotlin.

myNavController.addOnDestinationChangedListener { _, destination ->
    if (destination.id == R.id.loginFragment) {
        myDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
        myToolbar.setVisibility(View.GONE)
    } else {
        myDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
        myToolbar.setVisibility(View.VISIBLE)
    }

Чтобы убрать только кнопку вверх, используйте myToolbar.setNavigationIcon(null), а чтобы вернуть ее, используйте myToolbar.setNavigationIcon(R.id.my_icon)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...