Reputation: 4651
Take a look at this code snippet. I am getting an error with the last line, because I am passing an 'index' instead of a resource. I thought it was a lint issue and tried to suppress it. Then I noticed I am getting this error only when I building for release. It works fine when building for debug. I am totally clueless. Can anyone throw some light into what I am doing wrong.
//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);
Upvotes: 31
Views: 17242
Reputation: 2066
@StyleableRes int index = 1;
mPaddingRight = ta.getDimensionPixelSize(index, 0);
Upvotes: 12
Reputation: 1273
So the way I fixed this in Kotlin is the following: (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()
}
Upvotes: 4
Reputation: 57
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.paddingLeft, outValue, true);
int paddingLeft = outValue.data;
Repeat the same for android.R.attr.paddingRight
Upvotes: 0
Reputation: 1008
I had the same issue when trying to build a signed apk.
Solved it by adding @SuppressWarnings("ResourceType")
to suppress the warning, now it works fine.
Upvotes: 62