Action Bar Sherlock已弃用方法

时间:2012-09-29 19:02:40

标签: android eclipse actionbarsherlock

我下载了ActionBarSherlock版本4.1.0.0,并在我的Win7 java 1.6 update 24机器上将Eclipse Project库添加到Eclipse 4.2中。我在Project中使用了Android 4.1的Eclipse Project Build Target属性|项目构建目标。我想将ActionBar功能合并到一个具有minSdkVersion =“7”的现有应用程序中。我注意到ActionBarSherlock库中的代码似乎有一些不推荐使用的方法,并且出现错误:

示例1:ActionBarContainer.java,ActionBarContextView.java,ScrollingTabContainerView.java - 使用setBackgroundDrawable - 不推荐使用View类型的方法setBackgroundDrawable(Drawable)

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);
}

快速修复显示为ActionBarContainer添加@SupressWarnings'弃用'

示例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不应该没问题,因为Action Bar Sherlock应该在Andriod 2.x工作吗?让其他人体验过这一点,如果有,建议的行动是什么?抑制/忽略弃用? SetActivated上的错误怎么样?我查看了自述文件并进行了一些网络搜索,但没有提出任何相关内容。感谢您的任何建议。

谢谢!

2 个答案:

答案 0 :(得分:3)

很好。代码是2.x 兼容,甚至一些方法已被弃用从4.x ,它们仍然存在。它也不代表4.x这些已弃用的方法将被使用。来源是2.x-4.x所以没有别的方法(更不用说反射了,但这会伤害性能,现在不需要)。因此,忽略这一点是安全的。对某些文件关闭折旧可能会更好,但它不存在。所以别担心。

答案 1 :(得分:0)

这并没有真正回答这个问题,但当我必须拥有一个minSdkVersion 9并且我想拥有ActionBarSherlock时我遇到了同样的问题但是我得到了actionBar需要minSdkVersion 11的相同错误。

显然在ADT 21.1中你创建了一个值-v11 / styles.xml并将actionBar放在那里。

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