3

私は最初に書いたアプリを v2.2 をターゲットにするように変換している最中なので、v4 互換ライブラリと ActionBarSherlock を使用して v4 をターゲットにしています。

オプション メニューとサブメニューをいじって、ActionBarサブメニュー項目を独自の方法で識別する方法を考え出そうとしています。

例...

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    SubMenu mediaSubMenu = menu.addSubMenu("Media");
    mediaSubMenu.add("Videos");
    mediaSubMenu.add("Music");

}

「メディア」のActionBarメニュー項目が表示され、クリックすると「ビデオ」と「音楽」のサブメニュー項目が表示されます。私の問題は、クリックされたサブメニュー項目を特定するために私が解決した唯一の方法は次のとおりです...

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);

    if (item.getTitle().equals("Music")) {
        // Do something
        return true;
    }
    return false;
}

たとえば、「設定」->「音楽」など、同じ名前の別のサブメニュー項目があるかもしれません。

2つを区別するにはどうすればよいですか?ここで非常に単純なものが欠けていると感じずにはいられません。

4

1 に答える 1

3

MenuItem の ID を設定する

mediaSubMenu.add(Menu.NONE, R.id.media_videos, Menu.NONE, "Videos")

リソース ファイル (res/values/ids.xml など) で ID を定義できます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="media_videos" type="id"/>
    <item name="other_videos" type="id"/>
</resources>

そして、あなたはそれを使用することができます

switch(item.getItemId()) {
    case R.id.media_videos:
        ...
    case R.id.other_videos:
        ...
}

メニュー xml を使用してアクション バー データを設定することもお勧めします。

于 2013-03-10T01:57:48.207 に答える