android - 如果登录,如何仅在导航抽屉上显示片段
问题描述
我是android开发的新手。我想了解如何开发导航抽屉并仅在用户登录时显示特定片段。我用谷歌搜索但没有运气。
示例 如果用户未登录,应该看到的片段是:
- 登录
- 店铺
- 帮助
但是如果他们登录了,片段应该是:
- 店铺
- 订单
- 帐户
- 设置
Store
很常见,因为我希望用户仍然能够在不登录的情况下浏览商店。
我需要创建多个抽屉吗?一个在不需要登录的 MainActivity 上,另一个在第二个 Activity 上登录片段,即 CustomerActivity?
请任何建议/指南将不胜感激。
我不希望有任何代码,但如果你有任何代码,非常感谢。
解决方案
您可以在菜单资源目录下创建两个菜单资源文件(menu_logged_in.xml和menu.xml)。(这里是 res/menu/xml 文件)
例如 menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_login"
android:title="@string/string_menu_login"
android:icon="@drawable/ic_login"/>
<item android:id="@+id/menu_store"
android:icon="@drawable/ic_store"
android:title="@string/string_menu_store"/>
<item android:id="@+id/menu_help"
android:icon="@drawable/ic_menu_help"
android:title="@string/string_menu_help"/>
</menu>
然后在您的onCreateOptionsMenu()中,您可以检查是否已登录并据此扩充您的菜单。
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val inflater = menuInflater
if(loggedIn)
inflater.inflate(R.menu.menu_logged_in, menu)
else
inflater.inflate(R.menu.menu, menu)
return true
}
请记住在您的onOptionsItemSelected()方法中管理所有 id,以便为它们提供一些操作:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.menu_store -> {
//go to fragment store
}
R.id.menu_settings -> {
//go to settings
}
R.id.menu_login -> {
//go to login
}
...etc
}
return super.onOptionsItemSelected(item)
}
推荐阅读
- asp.net-core - 客户端和 .Net Core API 之间的 AAD 身份验证
- firebase - x-appengine-citylatlong 没有给出正确的 Lat & Lag
- python - 带有 glob 的 for 循环在 Python 中无法正常工作
- node.js - nginx,react,node,表达正确配置
- python - 两个进程之间的管道列表
- node.js - React Native Awesome 项目构建失败
- react-native - React Native(平面列表)
- github - 在具有多个项目的单个存储库中使用 GitHub Actions
- .net - 如何从 VB.NET 中的 XML 文件构建唯一的树结构
- javascript - 在 HTML 中,如何创建一个内容超出边框且可拖动的 div?