4

のオプションメニューでいくつかのプロパティを変更しているときにスタックしますonCreateOptionsMenu()。メニュー項目への参照が正しいことは確かですが、findItem()はnullを返すようです。私のコードは次のようになります。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_profile, menu);
        MenuItem leftie = menu.findItem(R.id.menu_profile);
        leftie.setIcon(R.drawable.ic_menu_mapmode);
        leftie.setTitle(R.string.back_map);
        leftie.setIntent(authIntent);

        return true;
    }

何が悪いのか本当にわかりません。前もって感謝します :)

編集:私は実際の問題を含めるのを忘れました。

4

4 に答える 4

3

そのメニュー項目のタイトルと画像をXMLで指定できます。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/newsItem"
    android:icon="@drawable/news_tab"
    android:title="@string/menu_news"/>

<item
    android:id="@+id/dryiceItem"
    android:icon="@drawable/dryice_tab"
    android:title="@string/menu_dryice"/>

</menu>

次のようにmenuItemにインテントを設定できます。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case R.id.newsItem:
        // start News activity
        //write your intent here.
        break;
    case R.id.dryiceItem:
                   //start another activity
                   //write your intent here.
         break; 
            }
    }
于 2012-10-18T04:57:36.070 に答える
1

私はそれを考え出した。menuインデックスを参照する文字列がR.menu.activity_profile間違ったパスであったため、空のメニューが膨らんでいました。文字列をに変更しましたが、R.menu.layout期待どおりに機能するようになりました。

System.out.println(menu.size());
MenuItem leftie = menu.findItem(R.id.menu_profile);
System.out.println(leftie);
leftie.setIcon(R.drawable.ic_menu_mapmode);
leftie.setTitle(R.string.back_map);
leftie.setIntent(authIntent);
于 2012-10-18T11:54:51.260 に答える
0

アイテムタグに適切にネストされていないサブメニューがある場合にも、これが発生しました。

<item />
    <menu>
    </menu>

また

    <item >
        <menu>
        </menu>
   <item>
于 2013-05-03T14:24:16.327 に答える
-1

MenuItemを使用してfindItemステートメントを型キャストします

         MenuItem leftie = (MenuItem) menu.findItem(R.id.menu_profile);
于 2012-10-18T05:32:01.853 に答える