我想以编程方式从我的 Activites 中更改一些标题。我有一些像
“显示/隐藏东西1”“显示/隐藏东西2”
现在我想将文本更改为:
“Show something1”并执行一些操作,并将此菜单项的文本更改为:
“隐藏东西1”......
我测试这个解决方案,并得到一个空指针
我的布局:
<?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>
还有我的代码:
@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);
}
}
得到这个错误:
进程:com.packagename.foo,PID:12441 java.lang.NullPointerException:尝试在 com 的空对象引用上调用接口方法“android.view.MenuItem android.view.MenuItem.setTitle(java.lang.CharSequence)” .sherdle.universal.rallye.MainActivity.onCreateOptionsMenu(MainActivity.java:646)
在这一行: MenuItem item=menu.getItem(R.id.menu_1)
需要帮忙 :)
编辑:找到另一个解决方案:Android - 如何动态更改 onOptionsItemsSelected 或 onCreateOptionsMenu 之外的菜单项文本但不起作用
因为 Menu 的 getItem() 方法返回给定索引处的菜单项,而不是传入一个资源 ID,这可能会抛出一个 IndexOutOfBoundsException,如文档中所述。相反,您应该使用索引值,以便第一个菜单项 menu_1 为 0,另一个菜单项 menu_2 为 1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句