В моем проекте у меня есть класс, унаследованный от CountDownTimer, и я хочу изменить определенный значок MenuItem в методе onFinish(). Но код не работал.Как изменить значок MenuItem из обычного класса Java в Android?
@Override
public void onFinish() {
Menu menu = newMenuInstance(context);
MenuInflater menuInflater = new MenuInflater(context);
menuInflater.inflate(R.menu.menu_main, menu);
menu.findItem(R.id.menu_work).setIcon(R.mipmap.ic_action_tick);
}
protected Menu newMenuInstance(Context context) {
try {
Class<?> menuBuilderClass = Class.forName("com.android.internal.view.menu.MenuBuilder");
Constructor<?> constructor = menuBuilderClass.getDeclaredConstructor(Context.class);
return (Menu) constructor.newInstance(context);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Добавить invalidateOptionsMenu(); в методе onFinish() после установки нового значка –
Привет Ясир, мой класс CountDownTimer не является внутренним классом активности или фрагмента, есть ли способ использовать метод invalidateOptionsMenu() вне активности? – KevinWang
Вы можете вызвать эту функцию только с этим конкретным действием referecnce –