PhoneGap插件如何更改Android上的菜单?

PhoneGap插件如何更改Android上的菜单?,android,cordova,menu,phonegap-plugins,Android,Cordova,Menu,Phonegap Plugins,我已经为Android编写了一个PhoneGap插件,它可以在各种事件中从浏览器调用,我希望它能够影响按下菜单按钮时显示的菜单项。例如,我想禁用某个事件,或添加某些项目。按照说明,我知道我需要重写onprepareOptions菜单(),以动态更改菜单项 目前,我的解决方案是在插件中编写一个文件,然后在OnPrepareOptions菜单中解析该文件。有更好的方法吗?有没有办法从插件中获取主活动的句柄 编辑:我刚才做的另一种方法是在我从插件访问的主活动类中使用公共静态变量。我使用了SharedR

我已经为Android编写了一个PhoneGap插件,它可以在各种事件中从浏览器调用,我希望它能够影响按下菜单按钮时显示的菜单项。例如,我想禁用某个事件,或添加某些项目。按照说明,我知道我需要重写
onprepareOptions菜单()
,以动态更改菜单项

目前,我的解决方案是在插件中编写一个文件,然后在OnPrepareOptions菜单中解析该文件。有更好的方法吗?有没有办法从插件中获取主
活动的句柄


编辑:我刚才做的另一种方法是在我从插件访问的主活动类中使用公共静态变量。

我使用了SharedReferences(
PreferenceManager.GetDefaultSharedReferences
)在插件和活动之间交换数据。虽然它可能不完全适合你的情况,但这里是我使用它的方式

Plugin1.java

public PluginResult execute(String action, JSONArray args, String callbackId) {
        PluginResult result = new PluginResult(Status.OK);
        result.setKeepCallback(true);

        // Set the preference data based on plugin call
        counter++;
        PreferenceManager.getDefaultSharedPreferences(this.ctx.getApplicationContext()).edit().putInt("counter", counter).commit();

        return result;
}
AppActivity.java

public boolean onPrepareOptionsMenu(Menu menu) {
        int counter = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext()).getInt("counter", 0);
        Log.i("App", "counter value - " + counter);

        return super.onPrepareOptionsMenu(menu);
}

在我的例子中,共享首选项在持久化数据时起作用。您可以查看其他选项

对,因此我目前正在使用InternalStorage--出于好奇,您为什么选择SharedReferences?我之前使用shared preferences来维护应用程序级设置,并发现它非常易于使用,以便所有活动和后台进程都可以访问相同的数据。我也使用过文件和数据库,但对于有限的数据,我直接找到了首选项