У меня MenuItem определен следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_starred"
android:icon="@drawable/btn_star"
android:title="@string/description_star"
android:checkable="true"
android:checked="true"
android:orderInCategory="1"
android:showAsAction="always" />
</menu>
и btn_star.xml
определены следующим образом:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="false"
android:drawable="@drawable/btn_star_off_normal" />
<item
android:state_checked="true"
android:drawable="@drawable/btn_star_on_normal" />
</selector>
Когда я создаю меню параметров с помощью этого, значокникогда не показывается в проверенном состоянии, даже если свойство MenuItem
isChecked()
имеет значение true.
Я использую элемент управления ActionBarSherlock , однако я получаю то же самоерезультат, если я просто создаю обычное меню параметров и вызываю setChecked(true)
.Он по-прежнему отображает btn_star_off
, который можно рисовать, независимо от того, отмечен ли элемент.
Метод onOptionsItemSelected()
вызывается правильно, и я могу успешно изменить проверенное свойство:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.isCheckable()) {
item.setChecked(!item.isChecked());
}
return super.onOptionsItemSelected(item);
}
Установка точки останова здесь показывает, что свойство isChecked изменяется, но сам значокне обновляется, чтобы отразить правильное состояние.
Есть что-то, что я здесь упускаю?Я делаю это неправильно?Я не могу понять, почему это не будет работать правильно.