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()
}