Action Bar Sherlock已弃用方法

问题描述:

我下载了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上的错误呢?我查阅了自述文件,并进行了一些网络搜索,但没有提出任何关于此的内容。感谢您的任何建议。

谢谢!

这很好。该代码是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

这并没有真正回答这个问题,但我遇到了同样的问题时,我必须有一个的minSdkVersion 9,我想有ActionBarSherlock,但我得到的动作条的同样的错误,需要的minSdkVersion 11

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

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