java - 以编程方式关闭工具栏菜单
问题描述
我的工具栏中有一个菜单,其中有两个子菜单(登录、注销)。当我按下菜单图标并且用户未登录时,我希望它立即打开另一个活动。当用户登录时,它应该打开子菜单列表。
<?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"
android:id="@+id/fieldChooserMenu">
<item android:id="@+id/userButton"
android:title="@string/userButton"
android:icon="@drawable/ic_person_outline_black_24dp"
app:showAsAction="always">
<menu>
<item android:id="@+id/changeUser" android:title="Login"/>
<item android:id="@+id/logOutUser" android:title="Log out"/>
</menu>
</item>
</menu>
以下是 onOptionsItemselected 中应执行的操作的示例:
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.userButton) {
if (userIsLoggedIn()) {
//Opens other options (Change User && Logout User)
} else {
openUserManagementActivity();
}
} else if (item.getItemId() == R.id.changeUser) {
openUserManagementActivity();
} else if (item.getItemId() == R.id.logOutUser) {
logoutUser(this);
}
return true;
}
问题是子菜单列表以任何一种方式打开。
有没有办法关闭菜单(或阻止它打开)?
提前致谢!
解决方案
您可以禁用菜单项 - https://stackoverflow.com/a/5441329/6413387
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
if (isFinalized) {
menu.getItem(1).setEnabled(false);
// You can also use something like:
// menu.findItem(R.id.example_foobar).setEnabled(false);
}
return true;
}
推荐阅读
- go - 如何在 Godog 中创建不同的套件并定义它们的执行顺序?
- c# - 在 web Api 2 RDLC 报表控制器中,为什么我不能返回 FILE?
- javascript - 在JS中检查一个数组的值与另一个数组的值
- java - For循环中的无限循环
- java - 使用 Java 构造函数和答案未返回正确的输出
- java - 编写一个从搜索中返回布尔值的 java 方法
- php - 无法使用 Ajax 将数据搜索到数据表中 - Codeigniter
- javascript - 如何在 Node.js 中更改或编辑 Html
- blockchain - 如何为 Polkadot 或 Kusama 等 Substrate 链生成销毁地址?
- kotlin - 使用 kotlinx.html 通过迭代构建 HTML