2016-12-27 2 views
1

Как я могу получить значок из панели инструментов, который будет изменен на новый, который я получаю с помощью метода, который отображается в bbdd. Проблема в том, что я не могу получить доступ к событию, которое обновляет действие, чтобы изменить значок. Я попытался использовать метод onPrepareOptionsMenu, но я не могу заставить его работать. Я не смог сделать это, поставив код в onStart, потому что он сообщает мне, что объект меню пуст или недействителен.Измените значок на панели инструментов Android

public boolean onPrepareOptionsMenu(Menu menu) { 
    menu.clear(); 
    Drawable iconoMenu = obtenerIconoMenuCarro(); 
    getMenuInflater().inflate(R.menu.menu_categorias, menu); 
    menu.getItem(0).setIcon(iconoMenu); 
    return super.onPrepareOptionsMenu(menu); 

} 

    @Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_categorias, menu); 
    Drawable iconoMenu = obtenerIconoMenuCarro(); 
    menu.getItem(0).setIcon(iconoMenu); 
    return true; 
} 

Мои действия распространяются AppCompactActivity и загружаются через AdapterView. И у меня есть проблема, когда я возвращаюсь к фрагментуDialog или со следующего действия.

Спасибо.

+1

[Это сообщение] (http://stackoverflow.com/questions/19882443/how-to-change-menuitem-icon-in-actionbar-programatically) имеет много вариантов, чтобы сделать то, что вы хотите. Вы можете установить глобальное логическое значение, и если вы хотите обновить пункт меню, вызвав 'invalidateOptionsMenu()', измените значение boolean на true. Затем в 'onPrepareOptionsMenu', если логическое значение true, измените значок без необходимости удаления меню. – Fllo

+0

Спасибо, я доверяю проблему. – ferdiado

+1

@ferdiado Uh, что такое 'solicionate'? –

ответ

0

Для меня самым простым способом было сохранить ссылку на MenuItem для последующего использования.

Получите, когда пункт меню завышен.

MenuItem menuItem; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main_menu, menu); 

     //find the menu item from the id 
     menuItem = menu.findItem(R.id.myMenuItem); 
     return true; 
    }

Затем измените изображение, где вам нужно с MIPMAP ресурса или @drawable.

menuItem.setIcon(R.mipmap.ic_other_icon);
Смежные вопросы