web-dev-qa-db-ja.com

Androidのメニュー項目のAndroid IDを取得するにはどうすればよいですか?

メニュー項目のAndroid IDを取得する方法はありますか?getTitle()は表示されますが、getId()は表示されません)。ID値「menu_printer_settings」に興味があります。タイトル値「printer_settings」とメニュー項目ID(getItemId())。MonkeyTalkスクリプトをローカライズされたビルドでも機能させるには、このIDが必要です。

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item
    Android:id="@+id/menu_printer_settings"        
    Android:title="@string/printer_settings"
/>
12
Harish

ソリューション1:

MenuItem item

String[] id = getResources().getResourceName(item.getItemId()).split("\\/");

次に、id [1]にアクセスします

ソリューション2:

titleCondensedを使用して、idと一致させます。例:.

<menu>
            <item Android:id="@+id/myid"
                  Android:title="some menu title"
                  Android:titleCondensed="myid"/>
...
</menu>

その後

String selectedMenuIdString = (String) item.getTitleCondensed();

ID名を繰り返す必要がないため、ソリューション1の方が好きです。

お役に立てれば。よろしくスティーブ

13
SteJav

これを試して:

public boolean onOptionsItemSelected(MenuItem item) {

            switch (item.getItemId()) {

            case R.id.menu_printer_settings:
                    //do what you want  
                    break;
                }
}
9
Jarvis

それでも問題が解決しない場合は、getItemID()を使用してみてください。

MenuItem.getItemIdはItemIdの代わりに0を返します

0
Wattcey

Menuオブジェクトを使用して、IDを取得することもできます。

menu.findItem(R.id.navigation_featured).getItemId()
0
Sumit Shukla