我下载了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上的错误怎么样?我查看了自述文件并进行了一些网络搜索,但没有提出任何相关内容。感谢您的任何建议。
谢谢!
答案 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放在那里。