1. 解答
// 使用 getInt() 方法
val intValue = typedArray.getInt(0, 0) // 获取索引为 0 处的整型属性值,如果不存在或无效,返回默认值 0
// 使用 getInteger() 方法
val integerValue = typedArray.getInteger(0, 0) // 获取索引为 0 处的整型属性值,如果不存在或无效,返回 null
2. 原理
在 Android 开发中,TypedArray 是一种用于获取 XML 布局或主题中定义的属性值的对象。TypedArray 提供了多个用于获取不同类型属性值的方法,包括 getInt() 和 getInteger()。
- getInt(int index, int defValue) 方法:
该方法用于从 TypedArray 中获取指定索引处的整型属性值。
如果属性值不存在或无效,或者索引超出范围,方法将返回提供的默认值 defValue。
- getInteger(int index, int defValue) 方法:
该方法用于从 TypedArray 中获取指定索引处的整型属性值。
与 getInt() 方法不同的是,如果属性值不存在或无效,或者索引超出范围,方法将返回 null,而不是默认值。
需要注意的是,getInt() 方法始终返回一个整型值,无论属性值是否存在或有效。而 getInteger() 方法在属性值不存在或无效时返回 null。
下面是一个简单的示例,演示了如何使用 TypedArray 的 getInt() 和 getInteger() 方法:
val attrs = intArrayOf(R.attr.customAttribute)
val typedArray = context.obtainStyledAttributes(attrs)
// 使用 getInt() 方法
val intValue = typedArray.getInt(0, 0) // 获取索引为 0 处的整型属性值,如果不存在或无效,返回默认值 0
// 使用 getInteger() 方法
val integerValue = typedArray.getInteger(0, 0) // 获取索引为 0 处的整型属性值,如果不存在或无效,返回 null
typedArray.recycle()