2011-07-11 72 views
13

我正在爲android(2.1> 3.1)編寫一個應用程序,並且我想使用在Honeycomb應用程序中使用應用程序圖標以熟悉家庭活動的慣例,但是,當我運行活動在較早的非Honeycomb設備中,Activity.getActionBar();方法尚不存在,應用程序強制關閉,如果設備運行蜂窩,我怎麼才能運行這個指定的代碼?ActionBar pre Honeycomb

@Override 
protected void onStart() { 
    super.onStart(); 
    ActionBar actionBar = this.getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
} 

感謝您的任何幫助,祝您有美好的一天。

回答

13

Android pre-Honeycomb沒有ActionBar,所以任何有關actionBar的方法都會失敗。你應該看看code from the Google IO app,它使用了一個ActionBar,用於Honeycomb和pre-Honeycomb。

簡而言之,它不會自行工作,您必須包含您自己的ActionBar代碼。

3

我覺得代碼是不言自明

private static int sdkVersion; 
static 
{ 
    try { 
     sdkVersion = Integer.parseInt(android.os.Build.VERSION.SDK); 
    } catch (Exception ex) { 
    } 
    } 

    /** Device support the froyo (Android 2.2) APIs */ 
    public static boolean isAndroid22() { 
    return sdkVersion >= 8; 
    } 

    /** Device support the Gingerbread (Android 2.3) APIs */ 
    public static boolean isAndroid23() { 
    return sdkVersion >= 9; 
    } 

    /** Device supports the Honeycomb (Android 3.0) APIs */ 
    public static boolean isAndroid30() { 
    return sdkVersion >= 11; 
    } 
4

由於動作條不預蜂窩存在,您將不得不湊合着用別的東西。 一個建議是使用johannilssons actionbar庫,它可以在github上找到。 直接鏈接:https://github.com/johannilsson/android-actionbar

+0

不能正常工作....下載提供的示例有錯誤... – aProgrammer

68

我寫了一個庫爲Android,它會自動使用自定義包裝你的前3.0活動執行動作欄設計模式。然後您可以調用getSupportActionBar(),這將爲本機和自定義實現提供通用接口,具體取決於您的應用程序運行在哪個Android版本上。

該庫還允許您通過單個主題將自定義樣式應用於這兩個操作欄。

您可以在actionbarsherlock.com找到更多信息以及示例應用程序的屏幕截圖。

該庫是100%開源的,可在github.com/JakeWharton/ActionBarSherlock處獲得。

+0

爲我的項目沉重( – Greensy

+0

)如果我使用的不是SherlockActivity或簡單的Activity,但不支持的MapsActivity會怎麼樣sherlock和'getSupportActionBar()'? – Csabi

+0

Google現在提供了[更好的解決方案](http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html) –

4

從爲Action Bar它說的API指南:

操作欄兼容性示例應用程序提供了一個API層和操作欄的佈局,讓您的應用程序使用一些動作條的API,也支持老版本通過將自定義操作欄佈局替換爲傳統標題欄,可以實現Android的更新。

您可以通過installing了Android 4.1(API 16)的樣品得到這個。

然後在Eclipse:

  1. 轉到文件>新建>項目
  2. 的Android> Android的示例項目
  3. 檢查安卓4.0。1
  4. 選擇ActionBarCompat
+0

你救了我的一天!非常感謝 – diewland

+1

ActionBarCompat項目沒有setDisplayHomeAsUpEnabled –

+1

@IgorGanapolsky是的,它有,我有它在我的項目中工作:getSupportActionBar()。setDisplayHomeAsUpEnabled(true); –

3

由於修訂18 Android Support library包含動作條支持回API級別7現在這是支持動作條從2.1的Android向上的所有版本的推薦方式是顯著更容易使用比第三方庫或其他黑客。