错误:类型为styleable [ResourceType]错误的预期资源

时间:2016-03-28 02:08:25

标签: android android-studio lint

看一下这段代码。 我在最后一行收到错误,因为我正在传递一个'索引'而不是资源。我认为这是一个皮棉问题,并试图压制它。 然后我注意到我只是在构建发布时才收到此错误。构建调试时它工作正常。我完全无能为力。任何人都可以对我做错的事情有所了解。

//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); 

4 个答案:

答案 0 :(得分:58)

我在尝试构建签名的apk时遇到了同样的问题。 通过添加@SuppressWarnings("ResourceType")来解决此问题以抑制警告,现在它可以正常工作。

答案 1 :(得分:7)

@StyleableRes int index = 1;

mPaddingRight = ta.getDimensionPixelSize(index, 0); 

答案 2 :(得分:1)

所以我在Kotlin中解决这个问题的方法如下:(thanks to Simons post)

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

答案 3 :(得分:0)

TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.paddingLeft, outValue, true);
int paddingLeft = outValue.data;

对android.R.attr.paddingRight

重复相同的操作