【问题标题】:Action Bar Sherlock has deprecated methodsAction Bar Sherlock 已弃用方法
【发布时间】:2012-09-29 19:02:39
【问题描述】:

我下载了 ActionBarSherlock 版本 4.1.0.0,并在我的 Win7 java 1.6 update 24 机器上将 Android 项目库添加​​到 Eclipse 4.2 中。我在 Project | 中使用了 Android 4.1 的 Eclipse 项目构建目标。属性 |项目构建目标。我想将 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 'deprecation'

示例 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(当前最小值为 7)。根据清单,这是有道理的:

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

API 7 不应该没问题吗,因为 Action Bar Sherlock 应该在 Andriod 2.x 上工作?其他人是否经历过这种情况,如果有,建议采取什么措施?抑制/忽略弃用? SetActivated 上的错误怎么办?我查看了自述文件并进行了一些网络搜索,但没有对此提出任何建议。感谢您的任何建议。

谢谢!

【问题讨论】:

    标签: android eclipse actionbarsherlock


    【解决方案1】:

    这很好。代码是 2.x 兼容,甚至某些方法已被弃用从 4.x 开始,它们仍然存在。这也不意味着在 4.x 上将使用这些已弃用的方法。源是 2.x-4.x 所以没有其他方法(更不用说反射,但这会损害性能,现在没有必要)。所以忽略这一点是安全的。关闭某些文件的折旧可能会更好,但它不存在。所以不用担心。

    【讨论】:

    • 感谢您的回复!那很好,我可以将其设置为忽略。 SDK版本的错误怎么办?如果我将 minSdkVerson 增加到 11,这不会阻止 Android 2.x 客户端安装应用程序吗?购买我的应用程序的客户中有超过 50% 是 Android 2.x 设备,所以我希望我可以更新我的应用程序,使这些设备可以接收我的更新。
    • 我把minSdkVersion改成11,保存,清理项目,去掉错误。然后我将 midSdkVersion 改回 7,保存并清理项目,仍然没有错误。我想我现在看起来很好!非常感谢你的帮助!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多