7

十分に単純であるべきですが、そうではないかもしれません。

Android 3.0 以降でアクション バーを使用する場合、メニュー項目を XML またはコードで定義するオプションがあります。アクションバーは機能的というよりもUIベースに感じられるので、xmlでコーディングすることを好みます。

通常、これを使用して xml をメニューにインフレートします。

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    // Menu is defined inside 'res/menu/...xml
    getMenuInflater().inflate(R.menu.activity_home, menu);
    return true;
}

XML ファイルは次のようになります。

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

    <item
        android:id="@+id/menu_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/menu_settings"/>
    <item
        android:id="@+id/menu_item_menu"
        android:icon="@drawable/menu_off_128"
        android:showAsAction="ifRoom|withText"
        android:title="@string/inbox_string"/>
    <item
        android:id="@+id/menu_item_gallery"
        android:icon="@drawable/gallery_off_128"
        android:showAsAction="ifRoom|withText"
        android:title="@string/gallery_string"/>
    <item
        android:id="@+id/menu_item_inbox"
        android:icon="@drawable/inbox_off_128"
        android:showAsAction="ifRoom|withText"
        android:title="@string/inbox_string"/>
    <item
        android:id="@+id/menu_item_contact"
        android:icon="@drawable/phone_off_128"
        android:showAsAction="ifRoom|withText"
        android:title="@string/contact_string"/>

</menu>

今、私はアクションバーを下位互換にするという問題に直面しており、actionbarsherlock が最も使いやすく人気があるようです。だから私はactionbarsherlockで上記を試しましたが、悲しいことにコンパイル時間の問題があります。

つまり、インフレータによって返される Menu クラスは、「com.actionbarsherlock.menu」ではなく「Android.view.menu」からのものです。私は github でサンプルを掘り下げましたが、それらのすべてにコードで定義されたメニューがあります。

XMLファイルベースのレイアウトで動作するactionbarsherlockメニューを手に入れた人はいますか?

4

2 に答える 2

23

これを試して

    @Override
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
        getSupportMenuInflater().inflate(R.menu.your_menu, menu);
        return true;
}
于 2012-08-01T12:28:46.210 に答える
5

自分でこの問題を抱えていました。

やりたいことは、次のようにgetMenuInflater( )の代わりにgetSupportMenuInflater()を呼び出すことです。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
于 2012-11-18T00:53:18.283 に答える