web-dev-qa-db-ja.com

ActionBarSherlockを使用してActionBarにボタンを追加する

SherlockActionBarにボタンを追加しようとしていますが、機能させることができません。

これは私が持っているコードです:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        Android.view.MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, (Android.view.Menu) menu);
        return super.onCreateOptionsMenu(menu);
    }

これは私の menu.xmlコード:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:id="@+id/save_button"
          Android:title="i"
          Android:showAsAction="always" />
</menu>

これは機能しません。メニューボタンを押しても何も表示されません。他に方法はありますか?私は間違いをしていますか?

19
noloman

AndroidのMenuとMenuInflaterを使用していますが、ActionBarSherlockに付属するクラスを使用する必要があります。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
   inflater.inflate(R.menu.menu, (com.actionbarsherlock.view.Menu) menu);
   return super.onCreateOptionsMenu(menu);
}

今、あなたは2つを混ぜ合わせているようです。 Android対応するものではなく、com.actionbarsherlock.view.Menuおよびcom.actionbarsherlock.view.MenuInflaterのみをインポートするようにしてください。次のようなことをお勧めします。

import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;

...

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater inflater = getSupportMenuInflater();
       inflater.inflate(R.menu.menu, menu);
       return super.onCreateOptionsMenu(menu);
    }
38
hanspeide

Menu.xmlだと思います。アイテムでAndroid:showAsAction属性が完全に宣言されていません。次のように宣言する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:id="@+id/save_button"
          Android:title="i"
          Android:showAsAction="always|withText" />
</menu>

アイテムのアイコンを指定していないため、アクションバーはアイテムを表示できません。デフォルトでは、アイコンはテキストよりも表示されます。

19
Joey