Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Android中的普通java类更改MenuItem图标?_Android_Menu_Menuitem - Fatal编程技术网

如何从Android中的普通java类更改MenuItem图标?

如何从Android中的普通java类更改MenuItem图标?,android,menu,menuitem,Android,Menu,Menuitem,在我的项目中,我有一个从CountDownTimer继承的类,我想更改onFinish()方法中的某个MenuItem图标。但是代码没有起作用 @Override public void onFinish() { Menu menu = newMenuInstance(context); MenuInflater menuInflater = new MenuInflater(context); menuInflater.inflate(R.menu.menu_main,

在我的项目中,我有一个从CountDownTimer继承的类,我想更改onFinish()方法中的某个MenuItem图标。但是代码没有起作用

@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;
}
@覆盖
公共无效onFinish(){
菜单=newMenuInstance(上下文);
MenuInflater MenuInflater=新的MenuInflater(上下文);
菜单充气(右菜单菜单主菜单);
menu.findItem(R.id.menu\u work).setIcon(R.mipmap.ic\u action\u tick);
}
受保护菜单newMenuInstance(上下文){
试一试{
类menuBuilderClass=Class.forName(“com.android.internal.view.menu.MenuBuilder”);
构造函数=menuBuilderClass.getDeclaredConstructor(Context.class);
返回(菜单)构造函数.newInstance(上下文);
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}

无论何时更改菜单项而不是
onCreateOptions菜单()
方法,都必须调用
InvalidateOptions菜单()
来刷新菜单项。

添加InvalidateOptions菜单();设置新图标后,在onFinish()方法中


如果您不是从“活动”调用此函数,请记住,您只能使用特定的“活动”引用调用此函数。

add InvalidateOptions功能表();在设置新iconHi Yasir后的onFinish()方法中,我的CountDownTimer类不是活动或片段的内部类,是否有方法在活动外部使用方法InvalidateOptions Smenu()?您只能使用特定的活动引用((MainActivity)上下文调用此函数。InvalidateOptions Smenu(); 我将这一行添加到代码中,它就起作用了。祝贺:D为什么你接受了别人的答案?如果我解决了你的问题,请接受答案并投票:)