我希望能根据在strings.xml
文件中设置为true/false的一些字符串,在Android应用程序中显示/隐藏菜单选项。
举个例子,我将在strings.xml
文件中有以下字符串:
<string name="option1">false</string>
<string name="option2">true</string>
<string name="option3">true</string>
在这种情况下,只需显示 option2
和 option3
。
另一方面,在代码中,我尝试了以下内容:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
getMenuInflater().inflate(R.menu.main, menu);
if((getResources().getString(R.string.option1)).equals("false")){
menu.getItem(R.id.option1).setVisible(false);
}
return true;
}
但是菜单上仍然显示着option1
。
我该如何将这些选项参数化?我可以直接删除这些选项,但是如果我的客户未来想要重新启用这些选项,我希望可以轻松地将false值更改为true。
编辑: 这是我的菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/option1"
android:title="Option 1" />
<item
android:id="@+id/option2"
android:title="Option 2" />
<item
android:id="@+id/option3"
android:title="Option 3" />
....
</group>
</menu>
最新更新
我注意到我因为菜单名称错误而收到了NullPointerException
。 我已经修复了它,现在不再出现任何错误。
但我的问题是,我有两个包含两个不同菜单的不同布局(每个布局中都有一个菜单),并且我根据登录时传入的一个字符串填充每个布局。
例如,假设填充第一个布局的字符串为“hello”,则我将在MainActivity
的onCreate
函数中按以下方式显示布局:
if("hello".equals(stringForLayout)){
setContentView(R.layout.activity_main);
}else{
setContentView(R.layout.activity_main_secondary);
}
我怎样才能对两个菜单的选项进行参数化,这样如果第一个菜单正在显示而我想要隐藏一个选项,我就可以引用该菜单的该选项?
提前感谢!