Как я могу добавить MenuItem в Android после onCreateOptionsMenu () - PullRequest
1 голос
/ 22 июля 2011

Я встретил серьезную проблему. Я хочу добавить MenuItem после того, как пользователь успешно вошел в систему.

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

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

Private Menu mymenu;
 public boolean onCreateOptionsMenu(Menu menu) {

        // TODO Auto-generated method stub

        super.onCreateOptionsMenu(menu);
        mymenu=menu;
        return super.onCreateOptionsMenu(menu);
 } 

public void process(){

        MenuInflater inflater=this.getMenuInflater();
        inflater.inflate(R.menu.my_menu,mymenu);

}

Кажется, эта идея сработала так, как я ее запомнил. Но после выполнения чего-то, что я не мог вспомнить, это не сработало!

После отладки я обнаружил, что mymenu = null.

Я догадался, что есть способ установить mymenu = menu

Может кто-нибудь помочь?

Ответы [ 2 ]

4 голосов
/ 22 июля 2011

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

Чтобы сделать то, что вы хотите, вы можете переопределить onPrepareOptionMenu и установить видимость скрытой для всех нежелательных элементов меню, пока ваше состояние не станет таким, что вы хотите его «добавить».

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem menuItem = menu.findItem(R.id.<id of menuitem>);
    menuItem.setVisible(<condition>);
    return true;
}

и просто используйте стандартный код в onCreateOptionsMenu:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.<id of menu with all items you'll need>, menu);
    return true;
}
0 голосов
/ 22 июля 2011

Существует метод, onPrepareOptionsMenu (Меню меню) метод, который вы можете переопределить и динамически изменить меню.

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