我想动态添加菜单项。我有这样的菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/allItems"
android:showAsAction="always"
android:title="@string/trackAll"/>
<item
android:id="@+id/specficItems"
android:showAsAction="always"
android:title="@string/trackSpecific"/>
<item
android:id="@+id/favItems"
android:showAsAction="always"
android:title="@string/trackFav"/>
</menu>
我尝试将项目添加到favItems
。
但是当我尝试这样的时候:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.admin_menu, menu);
MenuItem item=menu.findItem(R.id.favItems);
menu.add(0, MY_MENU_1, 0, "Item 1").setShortcut('3', 'c');
menu.add(0, MY_MENU_2, 0, "Item 2").setShortcut('4', 's');
menu.add(0, MY_MENU_3, 0, "Item 3").setShortcut('5', 'z');
return true;
}
输出结果如下:
但我想将这些项目添加到favItems
请让我知道在favItems
动态添加项目的任何想法。
如果我这样做:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.add(0, MY_MENU_1, 0, "Item 1").setShortcut('3', 'c');
menu.add(0, MY_MENU_2, 0, "Item 2").setShortcut('4', 's');
menu.add(0, MY_MENU_3, 0, "Item 3").setShortcut('5', 'z');
return super.onPrepareOptionsMenu(menu);
}
op就像这样:
答案 0 :(得分:0)
使用:onPrepareOptionsMenu(Menu menu)
准备要显示的屏幕标准选项菜单。每次显示菜单时都会调用此菜单。您可以使用此方法有效地启用/禁用项目或以其他方式动态修改内容。
// Gets called everytime, when menu button is pressed
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear(); //Empty's your menu
menu.add(); // adding your item
super.onPrepareOptionsMenu(menu);
return true;
}
编辑添加一个项目,因为您之前做了一些事情......您可以使用:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(IWantToAddMyItem){
menu.add(); // your item
IWantToAddMyItem = false;
}
super.onPrepareOptionsMenu(menu);
return true;
}
答案 1 :(得分:0)
现在您只需将项目添加到menu
。
尝试这样做:
MenuItem item = menu.findItem(R.id.favItems);
SubMenu sub = item.getSubMenu();
sub.add(0, MY_MENU_1, 0, "Item 1").setShortcut('3', 'c');
sub.add(0, MY_MENU_2, 0, "Item 2").setShortcut('4', 's');
sub.add(0, MY_MENU_3, 0, "Item 3").setShortcut('5', 'z');
编辑:
此外,您的favItems
应该是这样的:
<item
android:id="@+id/favItems"
android:showAsAction="always"
android:title="@string/trackFav">
<menu>
</menu>
</item>