Android,以编程方式更改菜单项的标题
我想以编程方式更改活动中的一些标题。 我有一些东西,比如 显示/隐藏某些内容1 显示/隐藏某物2 现在我想将文本更改为: 展示一些东西 和执行一些操作,并将此菜单项的文本更改为: 藏点什么 我测试这个解决方案,得到一个空指针 我的布局:Android,以编程方式更改菜单项的标题,android,layout,menu,Android,Layout,Menu,我想以编程方式更改活动中的一些标题。 我有一些东西,比如 显示/隐藏某些内容1 显示/隐藏某物2 现在我想将文本更改为: 展示一些东西 和执行一些操作,并将此菜单项的文本更改为: 藏点什么 我测试这个解决方案,得到一个空指针 我的布局: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:univers
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:universal="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_1"
universal:showAsAction="never"
android:title="Show/Hide Something1" />
<item
android:id="@+id/menu_2"
universal:showAsAction="never"
android:title="Show/Hide Something2" />
</menu>
出现以下错误:
进程:com.packagename.foo,PID:12441
java.lang.NullPointerException:尝试对空对象引用调用接口方法“android.view.MenuItem android.view.MenuItem.setTitlejava.lang.CharSequence”
位于com.sherdle.universal.rallye.MainActivity.onCreateOptionsMenuMainActivity.java:646
在此行中:MenuItem item=menu.getItemR.id.menu_1
需要帮助:
EDIT:找到了另一个解决方案:但不起作用,因为Menu的getItem方法返回给定索引处的菜单项,而不是传入可能引发IndexOutOfBoundsException的资源ID,如前所述。相反,您应该使用索引值,以便第一个菜单项menu1为0,另一个菜单项menu2为1。噢,该死的MenuItem item=menu.getItemR.id.menu1;//这里itemIndex是int,我应该仔细阅读注释:-O谢谢!现在它在索引中使用的速度更快:menu.findItemR.id.menu2;menu1.setTitleText;哪种方法更好?通过findItem还是getItem?@georf不确定哪一个更快,但我建议使用findItem,因为通过其资源ID引用视图是一种很好的做法。好的,谢谢!将使用findByItem它似乎是最好的版本感谢您的帮助=
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.rallye_menu, menu);
MenuItem item=menu.getItem(R.id.menu_1); // here itemIndex is int
item.setTitle("YourTitle");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_1:
// do some action
return true;
case R.id.menu_2:
// doe other action
return true;
default:
return super.onOptionsItemSelected(item);
}
}