Получить отрисовку из Android Menu Icon Icon

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

У меня есть два рисунка: Старо (что означает "Звездный апельсин") или Старв (что означает "Звездный белый"). Я просто хочу включить это в прессе.

Как я могу узнать, какой значок находится на иконке в public boolean onOptionsItemSelected(MenuItem item) метод. Можно ли узнать про ничью через предмет. я знаю, что item.getIcon() не является ничьей Я не могу сравнить item.getIcon() с R.drawable.starto

3 ответа

Решение

Вы могли бы попробовать

if (item.getIcon().getConstantState().equals(
        getResources().getDrawable(R.drawable.starto).getConstantState()
)) {
    ...
}

Как уже упоминалось здесь

Вы можете внести изменения в onPrepareOptionsMenu(), который вызывается каждый раз перед отображением меню. Подходит для отображения / скрытия параметров, основанных на некоторых динамических данных.

Если у вас уже сейчас состояние, вы можете напрямую позвонить

if (condition_for_orange) {
  menu.findItem(resourceId).setIcon(R.drawable.staro);
} else {
  menu.findItem(resourceId).setIcon(R.drawable.startw);
}

Вы можете использовать Shared Preference или другую глобальную переменную, которая может хранить состояние, которое может помочь вам решить, какой значок показывать сейчас.

Вы можете сравнить это тоже.

Вы можете найти идентификатор Drawable по

int identifier = getResources().getIdentifier("pic1", "drawable","android.demo");

и тогда вы можете сравнить это с R.drawable.starto `.

Другие вопросы по тегам