2012-09-29 110 views
0

我下載了ActionBarSherlock 4.1.0.0版本,並在我的Win7 java 1.6 update 24機器上將Eclipse Project 4.2庫添加到了Eclipse 4.2中。我在Project |中使用了Android 4.1的Eclipse Project Build Target屬性|項目建設目標。我想將ActionBar功能合併到minSdkVersion =「7」的現有應用程序中。我注意到從ActionBarSherlock庫中的代碼顯得有一些不贊成的方法,和一個錯誤:Action Bar Sherlock已棄用方法

實施例1:ActionBarContainer.java,ActionBarContextView.java,ScrollingTabContainerView.java - 從類型的方法setBackgroundDrawable(繪製對象) - 使用setBackgroundDrawable視圖已被棄用

public ActionBarContainer(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    setBackgroundDrawable(null); 

    TypedArray a = context.obtainStyledAttributes(attrs, 
      R.styleable.SherlockActionBar); 
    mBackground = a.getDrawable(R.styleable.SherlockActionBar_background); 
    mStackedBackground = a.getDrawable(
      R.styleable.SherlockActionBar_backgroundStacked); 

    if (getId() == R.id.abs__split_action_bar) { 
     mIsSplit = true; 
     mSplitBackground = a.getDrawable(
       R.styleable.SherlockActionBar_backgroundSplit); 
    } 
    a.recycle(); 

    setWillNotDraw(mIsSplit ? mSplitBackground == null : 
      mBackground == null && mStackedBackground == null); 
} 

快速修復示出了如添加@SupressWarnings「棄用」的ActionBarContainer

實施例2: IcsProgressBar.java使用animationResolution其示出了作爲棄用,相同快速修復如上

private static final int[] ProgressBar = new int[] { 
    ... 
    android.R.attr.animationResolution 

另外,我有一個錯誤在ActivityChooserView.java:

private static class SetActivated { 
    public static void invoke(View view, boolean activated) { 
     view.setActivated(activated); 
    } 
} 

錯誤是SetActivated - 呼叫需要API 11(電流min是7)。這使得基於該清單的意義:

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

不宜API 7是很好的,因爲操作欄福爾摩斯應在安卓2.x的工作嗎?其他人是否經歷過這種情況,如果是的話,建議採取的行動是什麼?抑或忽略棄用?那麼SetActivated上的錯誤呢?我查閱了自述文件,並進行了一些網絡搜索,但沒有提出任何關於此的內容。感謝您的任何建議。

謝謝!

回答

3

這很好。該代碼是2.x 兼容甚至一些方法已棄用從4.x,他們仍然存在。這也不意味着在4.x上會使用這些被棄用的方法。源代碼是2.x-4.x,因此沒有其他方法(更不用說反射,但是這會傷害性能,現在不是必需的)。所以忽略這一點是安全的。將某些文件的折舊關閉可能更好,但它不在那裏。所以不要擔心。

+0

感謝您的回覆!那很好,我可以設置它忽略。關於SDK版本的錯誤呢?如果我將minSdkVerson更改爲11,是否不會阻止Android 2.x客戶端安裝該應用程序?已經購買我的應用程序的客戶中超過50%是Android 2.x設備,所以我希望能夠以這些設備可以接收我的更新的方式更新我的應用程序。 – user1362308

+1

我將minSdkVersion更改爲11,保存,清理項目並排除錯誤。然後,我將midSdkVersion更改回7,保存並清理了該項目,仍然沒有錯誤。我認爲我看起來很擅長這一點!非常感謝yoru的幫助! – user1362308

0

這並沒有真正回答這個問題,但我遇到了同樣的問題時,我必須有一個的minSdkVersion 9,我想有ActionBarSherlock,但我得到的動作條的同樣的錯誤,需要的minSdkVersion 11

顯然,在ADT 21.1中,您創建了一個values-v11/styles.xml並將actionBar放在那裏。

https://code.google.com/p/android/issues/detail?id=48283