2012-04-23 18 views
19

私はSherlockActionBarにボタンを追加しようとしていましたが、動作させることができません。ActionBarSherlockを使用してActionBarにボタンを追加する

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

@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> 

これは動作しません。 。 他の方法はありますか?間違いはありますか?

答えて

38

あなたは、Androidのメニューと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を混在しているように思え。 com.actionbarsherlock.view.Menuとcom.actionbarsherlock.view.MenuInflaterのみをインポートし、Android対応のものはインポートしないようにしてください。次のようなことをお勧めします:

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); 
    } 
+0

これは非常にうまくいきますが、アプリケーションのすべてのアクティビティやフラグメントにまたがってボタンを配置することは可能ですか? – noloman

+0

はい。上記のonCreateOptionsMenu(...)を含む基本アクティビティを作成します。次に、このアクティビティをActionBarを表示させたいアクティビティに拡張します。 – hanspeide

+0

素晴らしいソリューションをありがとうございました! – ASP

19

私は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> 

あなたが任意の項目を表示できない項目のアクションバーの任意のアイコンを指定しなかったので。デフォルトでは、アイコンはテキストよりも表示されます。

この投稿が役立つ場合は、これを回答としてマークしてください。

ありがとうございました。

+1

thanx!exacltyは私が探していた! psはスペースを削除します( "always | withText") – Paschalis

+0

受け入れられた回答(hanspeideによる)とこの回答の両方を使用して、アクションバーにアイコンが表示されるという最終結果が得られました。ありがとう! – Muzikant

関連する問題