Как плагин PhoneGap может изменить меню на Android? - PullRequest
0 голосов
/ 13 марта 2012

Я написал плагин PhoneGap для Android, который вызывается из браузера при различных событиях, и я хотел бы, чтобы он влиял на то, какие пункты меню отображаются при нажатии кнопки Меню.Например, я хотел бы отключить определенное событие или добавить определенные элементы.Следуя указаниям на сайте Android , я знаю, что мне нужно переопределить onPrepareOptionsMenu() для динамического изменения пунктов меню.

В настоящее время мое решение включает в себя запись файла в плагин, а затемпарсинг этого файла в onPrepareOptionsMenu.Есть ли лучший способ сделать это?И есть ли способ получить дескриптор основного Activity из плагина?

edit: еще один способ, который я только что сделал, - это использование публичной статической переменной в основном классе Activity, к которому я обращаюсьиз плагина.

1 Ответ

2 голосов
/ 15 марта 2012

Я использовал SharedPreferences (PreferenceManager.getDefaultSharedPreferences) для обмена данными между плагином и активностью. Хотя это может не полностью соответствовать вашей ситуации, но я так и использовал.

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

В моем случае общие настройки сделали свое дело, поскольку они сохраняют данные. Вы можете посмотреть другие варианты здесь

...