2012-04-23 73 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); 
} 

好像你是交織兩個現在。確保你只導入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 2012-04-23 11:44:32

+0

是的。製作包含上述onCreateOptionsMenu(...)的基本活動。接下來,在您想讓ActionBar可見的活動中擴展此活動。 – hanspeide 2012-04-23 11:50:49

+0

感謝偉大的解決方案! – ASP 2013-07-20 09:59:49

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 2012-07-16 01:41:12

+0

使用接受的答案(hanspeide)和這個答案,得到了一個帶有圖標的操作欄的最終結果。謝謝 ! – Muzikant 2012-07-19 07:56:48