Состояние кнопки ActionBar выбрано

Я работаю с ActionBar. У меня есть 3 кнопки на панели действий и 3 действия. Когда я нажимаю кнопку, она переходит к другому действию, но я хочу сделать, какую кнопку я нажал, эта кнопка показывает выбранное состояние на панели действий.

Мой код меню ниже

<?xml version="1.0" encoding="utf-8"?>

<!-- Scan View -->
<item android:id="@+id/action_scan"
      android:icon="@drawable/scan_icon_deselected_d1"
      android:title="@string/scan_view"
      android:showAsAction="always" />

<!-- Settings View -->
<item android:id="@+id/action_settings"
      android:icon="@drawable/settings_icon_deselected_d1"
      android:title="@string/settings"
      android:showAsAction="always" />

<!-- Help Menu -->
<item android:id="@+id/action_help"
      android:icon="@drawable/whitequestionmark_deselected"
      android:title="@string/help_menu1"
      android:showAsAction="always" />

И в стиле

 <!-- Application theme. -->
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyTheme.ActionBar</item>
        <item name="android:windowContentOverlay">@null</item>
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

<style name="MyTheme.ActionBar" parent="android:Widget.Holo.ActionBar">
    <item name="android:background">@android:color/transparent</item>
    <item name="android:backgroundStacked">@android:color/transparent</item>
    <item name="android:displayOptions">showTitle</item>
</style>

person user3555472    schedule 11.06.2014    source источник


Ответы (2)


Попробуйте так:

@Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {

        for (int i = 0; i < mainMenu.size(); i++) {

            // Set default icons
            if (mainMenu.getItem(i).getItemId() == R.id.action1) {
                mainMenu.getItem(i).setIcon(R.drawable.icon_default1);
            } else if (mainMenu.getItem(i).getItemId() == R.id.action2) {
                mainMenu.getItem(i).setIcon(R.drawable.icon_default2);
            } else if (.....) {
                .....
            }
        }

        if (item.getItemId() == R.id.action1) {
            item.setIcon(R.drawable.icon_highlighted1);
        } else if (item.getItemId() == R.id.action2) {
            item.setIcon(R.drawable.icon_highlighted2);
        } else if(.....) {
            .....
        }

        return super.onMenuItemSelected(featureId, item);
    }
person Aman Singh    schedule 11.06.2014
comment
Что такое mainMenu в цикле For? - person user3555472; 11.06.2014
comment
Здесь For Loop используется для повторения элемента. - person Aman Singh; 11.06.2014

Я решил добавить его в onCreateOptionsMenu (меню меню).

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.activity_main_actions, menu); 
        for (int i = 0; i < menu.size(); i++) {
             if (menu.getItem(i).getItemId() == R.id.action_scan) {
                 menu.getItem(i).setIcon(R.drawable.scan_icon_deselected_d1);
               } else if (menu.getItem(i).getItemId() == R.id.action_settings) {
                 menu.getItem(i).setIcon(R.drawable.settings_icon_deselected_d1);
               } else if (menu.getItem(i).getItemId() == R.id.action_help) {
                 menu.getItem(i).setIcon(R.drawable.whitequestionmark_selected);
               }
          }
        return super.onCreateOptionsMenu(menu);
    }
person user3555472    schedule 11.06.2014