android - 登录 - 导航架构组件
问题描述
我使用 android 导航架构组件实现了对我的 LoginFragment 的条件导航。我现在面临的问题是,我想隐藏工具栏上的向上按钮,并在用户未登录时禁用任何应用内导航。
我希望能够使用单一活动方法来实现这一点,其中 Activity 设置应用内导航 UI 和 navController 就像在 android sunflower 演示中一样,导航目的地是片段。
我实现了这里描述的条件导航: Navigation Architecture Component - Login screen
如何使用导航架构组件正确实现在登录屏幕上隐藏导航和向上按钮?
解决方案
我不知道隐藏导航的确切含义,但我假设您的意思是隐藏抽屉布局。要隐藏向上按钮并锁定抽屉,请将以下内容添加到 MainActivity 的 onCreate。我正在使用科特林。
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)
推荐阅读
- java - 在 Java 中的多线程进程中更新布尔值
- python - 如何使用python selenium webdriver单击框架中存在的按钮
- python - 如果在centos 7上安装了MQ客户端,为什么pymqi不会安装?
- javascript - 在反应中创建受控输入
- c++ - 使用 Emscripten 编译时未检测到已安装的 Clang 和 GCC 版本
- asp.net - 在 ASP.NET Core MVC 的 PaginatedList 的下一页上保留来自 HttpPost 的过滤器
- javascript - 属性无效性检查不适用于迭代
- c# - 为什么我的小程序一直使用越来越多的 RAM 和大部分 CPU?
- winapi - 将文本设置为大量数据后释放编辑控件堆?
- reactjs - Laravel React 419 对 POST 请求,而 XCSRF 在标头中