2012-06-06 19 views
0

我跟着ActionBar compability version使用動作條保持兼容版本的Android 4.0

的代碼時,我使用的代碼,API等級10或小於它,它顯示了一個動作條,但是當我使用它的API級別11或更大,它不顯示標誌圖標和操作項目。

我檢查的類和我理解:

ActionBarHelperBase:API級10或更小。

ActionBarHelperHoneycomb:API等級11或更高。

ActionBarHelperICS:API等級14或更高。

解決ActionBar for Android 3.0或更高版本問題的最佳方法是什麼?特別是Android 4.0

回答

2

的問題是該清單文件。我應該從Manifest文件中刪除android:theme="@style/Theme.ThemeCompabilityVersion

然後,我需要在代碼中檢查版本在onCreate()方法,如:

private void setTheme() { 
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) 
     setTheme(R.style.ThemeCompabilityVersion); 
    else 
     setTheme(R.style.AppTheme);   
} 
+0

恭喜修復!如果可以,請確保將您的答案標記爲「已接受」,以便其他人能夠從您的成功中學習。乾杯〜 –

+0

是的,但我幾個小時都沒能做到。現在我能夠解決這個問題了。 – Ali

+0

這是什麼'R.style',它是否能夠編譯和不使用操作欄? – NoBugs

0

ActionbarSherlock是一個非常完善和先進的兼容性版本。它使用本機操作欄,如果在Android版本上運行,當然有一個等等。

actionbarsherlock.com

+0

感謝您的建議,但我正在尋找我所提到的問題的解決方案。 – Ali

1

有一個叫ActionBarSherlock令人難以置信的項目,允許在2.X使用所有的動作條功能的API

它會帶你一個樣本項目的理解和設置的依賴關係,它會解決了很多問題:)只需調用getSupportActionBar()並且所有方法都可用。

我做的一些常見錯誤是不正確設置主題。

<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar"> 
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> 
</style> 

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse"> 
<item name="background">@drawable/bg_striped</item> 
<item name="android:background">@drawable/bg_striped</item> 

<item name="backgroundSplit">@drawable/bg_striped_split</item> 
<item name="android:backgroundSplit">@drawable/bg_striped_split</item> 

然後,你必須是主題應用到將有動作條支持或應用程序標籤中的每個活動。

<application android:icon="@drawable/icon" 
      android:label="@string/app_name" 
      android:name=".ApplicationClass" 
      android:theme="@style/Theme.Styled"> 

您也可以設置包含在酒吧中有關項目的menu.xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/menu_save" 
     android:icon="@drawable/ic_launcher" 
     android:title="TestMe" 
     android:menuCategory="system" 
     android:showAsAction="never" /> 
<item android:id="@+id/menu_launch" 
     android:icon="@drawable/ic_launcher" 
     android:title="Test2" 
     android:menuCategory="secondary" 
     android:showAsAction="never" /> 
<item android:id="@+id/menu_go" 
     android:icon="@drawable/ic_launcher" 
     android:title="Test" 
     android:showAsAction="always|withText" /> 
</menu> 

,我學到的是,每個活動或片段可以把自己的動作條上最有趣的事情,所以如果一個片段可搜索帶放大鏡圖標的選項可以設置等

它有一些問題,在先前的版本中的片段,在當前版本似乎解決,我可以把一些示例代碼來設置它與RoboGuice和片段支持如果neede d。

希望它有幫助, 關心。

+0

我明白了,是的,我知道ActionBarSherlock,但是你是如何通過google精神解決我的問題的? – Ali

+0

你好!我想在Action Bar中使用RoboGuice(首選新的Android支持v7庫),但我不知道如何同時處理'RoboActivity'和'ActionBarActivity'。 –

0

您是否已將targetSdkVersion設置爲11或更高?你可以保持較低的minSdkVersion,例如:

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="15" /> 
+0

是的,這正是我在Manifest文件中寫的。 – Ali

+0

並且您正在按照「onCreateOptionsMenu」中所需的方法調用順序? –

+0

是的,我複製並粘貼鏈接中的示例。正如我所說:http://developer.android.com/resources/samples/ActionBarCompat/index.html – Ali

相關問題