【Android自定义View】typedArray.getInt 和 typedArray.getInteger的区别

Android自定义View中typedArray.getInt 和 typedArray.getInteger的区别

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

猜你喜欢

转载自blog.csdn.net/weixin_42473228/article/details/134190578
今日推荐