このコードスニペットをご覧ください。リソースの代わりに「インデックス」を渡すため、最後の行でエラーが発生します。私はそれが糸くずの問題だと思い、それを抑制しようとしました。その後、リリース用にビルドしているときにのみこのエラーが発生していることに気付きました。デバッグ用にビルドするときに正常に機能します。私は全く無知です。誰でも私が間違っていることに光を当てることができますか?.
//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);
したがって、Kotlinでこれを修正した方法は次のとおりです。 (Simonsの投稿に感謝)
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()
}
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(Android.R.attr.paddingLeft, outValue, true);
int paddingLeft = outValue.data;
Android.R.attr.paddingRightについても同じことを繰り返します