我正在尝试动态创建菜单列表,我能够创建菜单选项,但每次运行我的代码时,主项目的图标都会消失:这是我的代码示例:
private static final int SUB_Menu_ONE = R.menu.settings;
private static final int SUB_Menu_TWO = R.menu.settings + 1;
private static final int SUB_Menu_THREE= R.menu.settings + 2;
private static final int SUB_Menu_FOUR = R.menu.settings + 3;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.settings, menu);
return true;
}
// private Menu menu;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
menu.add(0, SUB_Menu_ONE, Menu.NONE, "Sub Menu Item 0");
menu.add(0, SUB_Menu_TWO, Menu.NONE, "Sub Menu Item 1");
menu.add(0, SUB_Menu_THREE, Menu.NONE, "Sub Menu Item 2");
menu.add(0, SUB_Menu_FOUR, Menu.NONE, "Sub Menu Item 3");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent inent;
switch (item.getItemId()) {
case SUB_Menu_ONE:
// doStuff(); 打破; 案例SUB_Menu_TWO: // 做东西(); 打破; 案例SUB_Menu_THREE: // 做东西(); 打破; 案例SUB_Menu_FOUR: // 做东西(); 打破; 默认: //如果我们到达此处,则无法识别用户的操作。 //调用超类来处理它。 return super.onOptionsItemSelected(item);
}
return false;
}
这是我的菜单设置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"
xmlns:compat="http://schemas.android.com/tools">
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings_title"
android:icon="@drawable/cuslistticketbutton"
app:showAsAction="always|withText"
android:actionLayout="@layout/custabview"
compat:showAsAction="ifRoom"
>
<!--<menu>-->
<!--<item-->
<!--android:id="@+id/menu_addticket"-->
<!--android:showAsAction="never"-->
<!--android:icon="@drawable/add_tickets"-->
<!--android:title=""-->
<!--compat:ignore="AppCompatResource,HardcodedText" />-->
<!--</menu>-->
</item>
</menu>
欢迎任何帮助
答案 0 :(得分:0)
您必须以编程方式设置图标。
menu.add(0, SUB_Menu_ONE, Menu.NONE, "PREMIUM (Live Video & Audio)").setIcon(R.drawable.icon);