Заменить изображения в меню
java код
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId()){
case R.id.new_deposit:
newDepoiit();
return true;
case R.id.delite_deposit:
return true;
}
return false;
}
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/new_deposit"
android:title="@string/new_deposit"
android:showAsAction="ifRoom"
android:icon="@drawable/news"/>
<item
android:id="@+id/delite_deposit"
android:title="@string/delite_deposit"
android:showAsAction="ifRoom"
android:icon="@drawable/delite_on"/>
</menu>
При нажатии кнопки delite_deposit хочу чтобы изменилась иконка вот так:

как это реализовать?
Ответы (2 шт):
Автор решения: Andrey Mihalev
→ Ссылка
Примерно так:
Объявляете переменную без инициализации.
MenuItem menuItem;Переопределяем метод
onPrepareOptionsMenuв котором присваиваем переменной пункт меню:@Override public boolean onPrepareOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); menuItem = menu.findItem(R.id.delite_deposit); return super.onPrepareOptionsMenu(menu); }В вашем методе обращаетесь к пункту меню и меняете картинку, например так:
menuItem.setActionView(imageView);
Автор решения: Style-7
→ Ссылка
Для вашего случая.
@Override
public boolean onOptionsItemSelected( MenuItem item ) {
switch( item.getItemId() ) {
case R.id.delite_deposit:
item.setIcon( R.drawable.delite_off);
break;
}
return true;
}
На практике делают отдельную функцию где по значению переменной выставляют нужную иконку при onCreateOptionsMenu и при нажатии/смене состояния.