我正在创建一个EditText
对象,并尝试在单元测试中引用它。有什么最好的方法可以为这个动态创建的对象添加一个新的id
,以便我稍后可以通过findViewById()
在单元测试中引用它?
我正在创建一个EditText
对象,并尝试在单元测试中引用它。有什么最好的方法可以为这个动态创建的对象添加一个新的id
,以便我稍后可以通过findViewById()
在单元测试中引用它?
您可以使用XML资源文件设置在R.id类中稍后使用的ID,并让Android SDK在编译时为它们提供唯一的值。
res/values/ids.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="my_edit_text_1" type="id"/>
<item name="my_button_1" type="id"/>
<item name="my_time_picker_1" type="id"/>
</resources>
在代码中使用:
myEditTextView.setId(R.id.my_edit_text_1);
设置此视图的标识符。该标识符在此视图层次结构中不必是唯一的。标识符应为正数。链接
因此,你可以使用
EveryView.setId(int);
这是我在 Kotlin 中作为扩展函数的解决方案:
/* sets a valid id that isn't in use */
fun View.findAndSetFirstValidId() {
var i: Int
do {
i = Random.nextInt()
} while (findViewById<View>(i) != null)
id = i
}