Управление доступностью меню параметров - PullRequest
1 голос
/ 07 апреля 2011

У меня есть действие (act2), которое можно запустить из act1 или act3.Если он запускается из act1, я бы хотел, чтобы мое меню параметров было доступно, то есть, когда вы нажимаете кнопку меню, оно появляется.Если он запускается из act3, у меня нет ничего, что должно быть в меню параметров, поэтому я бы хотел, чтобы оно не появлялось при нажатии меню.Как бы я пошел по этому поводу?

Ответы [ 3 ]

2 голосов
/ 07 апреля 2011

Используя Intents, это возможно.Например:

В act1, при запуске act2,

    Intent intent = new Intent(this, Act2.class);
    intent.putExtra("showmenu", true);
    startActivity(intent);

В act3 вы можете либо установить его в значение false, либо ничего не делать.

В act2 проверитьи покажи

    if (intent.getBooleanExtra("showmenu", false))
        //show option menu
2 голосов
/ 07 апреля 2011

Если вы вызываете act2 из act1, передайте логическую переменную как true через bundle.И если вы вызываете act2 из act3, передайте его как false или не передавайте вообще.

В вашем act2 и особенно в onCreate() методе перехватите эту логическую переменную.Вы должны быть осторожны, что если вы не передадите пакет из act3, он выдаст null pointer exception в act2 при выполнении этой операции.Теперь вы можете получить логическую переменную, которая поможет act2 определить, откуда она взялась.[если это правда, чем это произошло из act1 или из act2].

теперь переопределяет метод onCreateOptionsMenu() в вашей деятельности, он возвращает логическое значение.Поэтому, если вы передадите true, то пункты меню появятся, когда вы нажмете кнопку меню, или никакие пункты меню не появятся, если вы вернете false.Используйте ту логическую переменную, которую вы извлекли из метода onCreate (), вы можете просто вернуть ее, чтобы при отображении ее меню true [из act1] или в случае false [из act3] она вообще не отображалась.

1 голос
/ 07 апреля 2011

Если он запускается из act1:

Intent io = new Intent(act1.this, act2.class);
    io.putExtra("enableOptionMenu", 1);
    startActivity(io);

Если он запускается из act3:

Intent io = new Intent(act3.this, act2.class);
    io.putExtra("enableOptionMenu", 0);
    startActivity(io);

В act2 вы читаете "enableOptionMenu" в onCreate:

int enableOptionMenu;
    Intent i = getIntent();
    enableOptionMenu = i.getIntExtra("enableOptionMenu", 0);

и, наконец, проверьте, что enableOptionMenu в onCreateOptionsMenu:

public boolean onCreateOptionsMenu(Menu menu) {
    if (enableOptionMenu == 1) {    
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_act2, menu);
    }
    return true;
}
...