Android 错误:类型应为可样式化的资源[ResourceType]错误
看看这个代码片段。 最后一行出现错误,因为我传递的是“索引”而不是资源。我认为这是一个皮棉问题,并试图抑制它。 然后我注意到只有在构建发布版时才会出现这个错误。在构建以进行调试时,它可以正常工作。我完全不懂。谁能解释一下我做错了什么Android 错误:类型应为可样式化的资源[ResourceType]错误,android,android-studio,lint,Android,Android Studio,Lint,看看这个代码片段。 最后一行出现错误,因为我传递的是“索引”而不是资源。我认为这是一个皮棉问题,并试图抑制它。 然后我注意到只有在构建发布版时才会出现这个错误。在构建以进行调试时,它可以正常工作。我完全不懂。谁能解释一下我做错了什么 //Get paddingLeft, paddingRight int[] attrsArray = new int[]{ android.R.attr.paddingLeft, // 0
//Get paddingLeft, paddingRight
int[] attrsArray = new int[]{
android.R.attr.paddingLeft, // 0
android.R.attr.paddingRight, // 1
};
TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray);
if (ta == null) return;
mPaddingLeft = ta.getDimensionPixelSize(0, 0);
mPaddingRight = ta.getDimensionPixelSize(1/*error here*/, 0);
我在尝试构建一个签名的apk时遇到了同样的问题。 通过添加
@SuppressWarnings(“ResourceType”)
来解决此问题。为了抑制警告,现在它可以正常工作
@StyleableRes int index = 1;
mPaddingRight = ta.getDimensionPixelSize(index, 0);
对android.R.attr.paddingRight重复相同的操作,因此我在Kotlin中修复此问题的方法如下:
例如,我不知道为什么数组中的第一个元素没有显示此错误。它仅针对以下内容显示。如果我创建两个数组,每个数组有一个元素,那么就没有错误。有人能解释一下吗?或者您可以在该行之前使用//noinspection ResourceType以避免仅在该行代码中进行检查
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.paddingLeft, outValue, true);
int paddingLeft = outValue.data;
companion object {
private val attributes = intArrayOf(
android.R.attr.paddingLeft,
android.R.attr.paddingTop,
android.R.attr.paddingBottom,
android.R.attr.paddingRight)
}
init {
val arr = context.obtainStyledAttributes(attrs, attributes)
@StyleableRes
var i = 0
val leftPadding = arr.getDimensionPixelOffset(i++, 0)
val topPadding = arr.getDimensionPixelOffset(i++, 0)
val rightPadding = arr.getDimensionPixelOffset(i++, 0)
val bottomPadding = arr.getDimensionPixelOffset(i, 0)
arr.recycle()
}