当我动态创建菜单时,Android SubMenu图标消失

时间:2016-05-03 15:57:02

标签: java android html android-layout android-studio

我正在尝试动态创建菜单列表,我能够创建菜单选项,但每次运行我的代码时,主项目的图标都会消失:这是我的代码示例:

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>

欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

您必须以编程方式设置图标。

   menu.add(0, SUB_Menu_ONE, Menu.NONE, "PREMIUM (Live Video & Audio)").setIcon(R.drawable.icon);