背景
我正在使用this library,其中一个类(从ViewGroup扩展),在“PLA_AbsListView.java”中,在CTOR中,有这些行:
final TypedArray a = context.obtainStyledAttributes(R.styleable.View);
initializeScrollbars(a);
a.recycle();
最近,我更新了SDK& Android的ADT支持新的Android版本(Lollipop – API21).
问题
The method initializeScrollbars(TypedArray) is undefined for the type PLA_AbsListView
我试过的
我试图将API设置为低于21,但它没有帮助.
我也试图找出声明这个函数的位置.它应该是“View.java”中的受保护功能,但出于某种原因,我在the documentations中看不到它
这个问题
怎么会这样?
我该如何解决?
这可能是文档中的错误吗?
以前,当针对Kitkat时它起作用了……
解决方法:
来自android-21的View.java来源:
/**
* ...
*
* @removed
*/
protected void initializeScrollbars(TypedArray a) {
// It's not safe to use this method from apps. The parameter 'a' must have been obtained
// using the View filter array which is not available to the SDK. As such, internal
// framework usage Now uses initializeScrollbarsInternal and we grab a default
// TypedArray with the right filter instead here.
TypedArray arr = mContext.obtainStyledAttributes(com.android.internal.R.styleable.View);
initializeScrollbarsInternal(arr);
// We ignored the method parameter. Recycle the one we actually did use.
arr.recycle();
}
/**
* ...
*
* @hide
*/
protected void initializeScrollbarsInternal(TypedArray a) {
您没有看到它,因为该方法是使用@removed注释的. initializeScrollbarsInternal()也不能使用,因为它是用@hide注释的.
从评论开始,使用此方法并不安全,您应该将其报告给lib的作者.