2013-03-01 80 views
-2

我需要使用運行Android 2.2的HTC Legend運行
開放源代碼nyaruka/android-sms-relay。 但是,這個應用程序的構建目標是Android 4.2。
如何降級使用ActionBar從4.2到2.2的應用程序?

我試圖簡單地將構建目標從4.2更改爲2.2,但無法編譯應用程序。

我得到了以下錯誤:

public **ActionProvider** getActionProvider() { 
     // Noop 
     return null; 
    } 


ActionProvider不能被解析爲一個類型


@Override 
protected Context getActionBarThemedContext() { 
     return mActivity.**getActionBar()**.getThemedContext(); 
    } 


方法getActionBar()是未定義的類型活動


ImageButton actionButton = new ImageButton(mActivity, null, 
       itemId == android.R.id.**home** 
         ? R.attr.actionbarCompatItemHomeStyle 
         : R.attr.actionbarCompatItemStyle); 
     actionButton.setLayoutParams(new ViewGroup.LayoutParams(
       (int) mActivity.getResources().getDimension(
         itemId == android.R.id.**home** 
           ? R.dimen.actionbar_compat_button_home_width 
           : R.dimen.actionbar_compat_button_width), 
       ViewGroup.LayoutParams.FILL_PARENT)); 

家不能得到解決或不是一個場

誰投下了這個問題,請解釋原因!

回答

2

因爲ActionBar是Android 3.0的
引入了一個新的概念,而不是提供2.2

有一些Android 2.2 ActionBar samples在那裏你看到這個錯誤,
而且也是「ActionBarCompat」樣本在Google SDK中。

但是,這些可能仍需要做一些修改才能生成
以便讓 再次編譯您的項目。

更新:我只是想出了你所談論的https://github.com/nyaruka/android-sms-relay 如果無法使用的ActionBar自己一個不同的,你可以得到來自社會的一些幫助項目(在github)背後得到它工作2.2
另外......它似乎他們並沒有使用內置的ActionBar,但這個:http://actionbarsherlock.com/faq.html。我建議你檢查一下該項目的文檔。

+0

非常感謝!我正試圖進入這些文件。神!那麼多文件在那裏等着。 :) – 2013-03-01 04:53:11

0

如果您使用2.2 API新增的東西,則不能只降級構建目標。 如上所述,您必須使用另一個操作欄,因爲它在該API中不可用。 你可以在這裏看到,android 2.2是API 8 http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

+0

你是對的!修改應用程序以適應更低的目標對我來說是一項艱鉅的任務。我正在考慮爲該手機更新ROM的可能性。閱讀和理解源代碼可能比花幾天時間更容易。 – 2013-03-01 04:59:04

0

使用android兼容庫獲取Android 2中的Action Bar。2,它也適用於Android 3.0以上。

相關問題