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



我为Android编写了一个PhoneGap插件,它可以在各种事件中从浏览器调用,我希望它能影响按下菜单按钮时显示的菜单项。例如,我想禁用某个事件,或添加某些项目。按照安卓网站上的指示,我知道我需要覆盖onPrepareOptionsMenu()来动态更改菜单项。

目前,我的解决方案包括在插件中编写一个文件,然后在onPrepareOptionsMenu中解析该文件。有更好的方法吗?有没有办法从插件中获得主Activity的句柄?

edit:我刚刚做的另一种方法是在我从插件访问的主Activity类中使用一个公共静态变量。

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

Plugin.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);
}

在我的案例中,共享的偏好起到了作用,因为它能持久保存数据。您可以在此处查看其他选项

最新更新