你好,我为您提供最佳解决方案。假设您需要在创建菜单方法中隐藏特定项目并在其他片段中显示该项目。我以两个菜单项为例,一个是编辑,另一个是删除。例如,以下是菜单xml代码:
sell_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/action_edit"
android:icon="@drawable/ic_edit_white_shadow_24dp"
app:showAsAction="always"
android:title="Edit" />
<item
android:id="@+id/action_delete"
android:icon="@drawable/ic_delete_white_shadow_24dp"
app:showAsAction="always"
android:title="Delete" />
现在在您的活动中覆盖这两个方法,并将一个字段变量 mMenu 设置为:
private Menu mMenu;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.sell_menu, menu);
this.mMenu = menu;
menu.findItem(R.id.action_delete).setVisible(false);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_delete) {
return true;
} else if (item.getItemId() == R.id.action_edit) {
return true;
}
return super.onOptionsItemSelected(item);
}
在您的Activity中创建以下两个方法,并从片段中调用它们以隐藏和显示您的菜单项。这些方法如下:
```java
public void hideMenuItem() {
MenuItem item = findViewById(R.id.menu_item_id);
item.setVisible(false);
}
public void showMenuItem() {
MenuItem item = findViewById(R.id.menu_item_id);
item.setVisible(true);
}
```
请注意保留HTML标签,此处不提供解释。
public void showDeleteImageOption(boolean status) {
if (menu != null) {
menu.findItem(R.id.action_delete).setVisible(status);
}
}
public void showEditImageOption(boolean status) {
if (menu != null) {
menu.findItem(R.id.action_edit).setVisible(status);
}
}
这是我方面的解决方案,我认为这个解释会对您有所帮助。