Почему я не могу открыть ContextMenu, используя одну и ту же переменную меню дважды? - PullRequest
0 голосов
/ 08 июля 2019

Мне нужно динамически изменить видимость и ... возможность? пунктов контекстного меню, без необходимости использовать около пятнадцати логических значений для более крупных приложений с большим количеством опций меню, поэтому я подумал, что могу изменить переменную ContextMenu, а затем снова раздувать ее, но она не открывается снова после открытия один раз. Почему это?

Я пытался закрыть его и открыть, заставив открыть его снова (который заканчивается только в бесконечном цикле), и все виды вещей. Я попытался найти документацию и несколько вопросов здесь, а также Google, но я ничего не понимаю, почему это происходит. Я знаю, что это не «правильный» способ обработки contextMenus, но я хочу знать , почему это происходит.


//Earlier in the activity
[...]
menu.getItem(0).setVisibility(false);
[...]

@Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        if(this.menu == null){
            this.menu = menu;
            getMenuInflater().inflate(R.menu.menu_test, this.menu);
        } else {
            getMenuInflater().inflate(R.menu.menu_test, this.menu);
        }
    }

Меню открывается только один раз. Он не будет открываться снова, пока я продолжаю использовать закрытую переменную "menu" (this.menu) Почему это так? Я хотел бы знать, так как я считаю, что знание поможет мне понять, как правильно решать текущие проблемы дизайна, которые у меня есть.

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