Меню / подменю Android - меню «Заголовок» не требуется - PullRequest
0 голосов
/ 01 декабря 2011

Я пытаюсь использовать функцию подменю панели действий Android, потому что пока не могу понять меню Spinner.По сути, я хочу, чтобы моя текущая активность в веб-просмотре открывала новый URL на основе выбранного пункта меню.Это работает просто отлично.Проблема в том, что когда я щелкаю по имени родительского элемента, он обновляет текущее представление веб-просмотра.Не должно быть никаких действий, но я не уверен, как это указать.Мой код ниже.Может кто-нибудь объяснить, как заставить родительский элемент (который прокомментирован в коде ниже) не иметь никаких действий?Спасибо

<item android:id="@+id/apps" android:title="Action" android:showAsAction="always"> //THIS IS SUPPOSED TO BE A DROP-DOWN MENU'S TITLE, AND SHOULD NOT PERFORM ANY ACTION, CURRENTLY REFRESHES CURRENT WEBVIEW VIEW.
<menu>
<item android:id="@+id/item1" android:title="Item 1"></item> //OPENS WEBVIEW URL
<item android:id="@+id/item2" android:title="Item 2"></item> //OPENS WEBVIEW URL
<item android:id="@+id/item3" android:title="Item 3"></item> //OPENS WEBVIEW URL
<item android:id="@+id/item4" android:title="Item 4"></item> //OPENS WEBVIEW URL
</menu>
</item>

Этот код выполняется при нажатии на один из пунктов меню:

//NOTE THAT THERE IS NO CASE DECLARATION FOR - R.id.apps - maybe I need one?
        public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.item1:
            webview.loadUrl ("http://www.url1.com");
            return true;
        case R.id.item2:
            webview.loadUrl ("http://www.url2.com");
            return true;
        case R.id.item3:
            webview.loadUrl ("http://www.url3.com");
            return true;
        case R.id.item4:
            webview.loadUrl ("http://www.url4.com");
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

1 Ответ

0 голосов
/ 02 декабря 2011

Хорошо, после охоты навсегда, я наконец-то понял ответ на этот вопрос.

В качестве краткого объяснения моей проблемы я создал меню из 4 пунктов. 2 из этих пунктов содержали подменю. Родительские элементы этих подменю при нажатии обновляли мое текущее веб-представление, что было проблемой. Я хотел, чтобы эти родительские элементы ничего не делали при нажатии (открывалось только подменю). Это исправление:

//NOTE THAT THERE IS NO CASE DECLARATION FOR - R.id.apps - maybe I need one? -- ANSWER IS YES
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    // ADDING CASE DECLARATION FOR R.id.apps //
    case R.id.apps:
    { }
    return true;
    // END ADDING DECLARATION FOR R.id.apps //
    // NOTE: For a menu item that you wish to perform no action when selected, 
    case R.id.item1:
        webview.loadUrl ("http://www.url1.com");
        return true;
    case R.id.item2:
        webview.loadUrl ("http://www.url2.com");
        return true;
    case R.id.item3:
        webview.loadUrl ("http://www.url3.com");
        return true;
    case R.id.item4:
        webview.loadUrl ("http://www.url4.com");
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
...