我正在创建一个EditText
对象,然后我尝试在单元测试中引用它。为此动态创建的对象添加新id
到R.id
的最佳方法是什么,以便稍后我可以在单元测试中通过findViewById()
引用它?
答案 0 :(得分:201)
您可以使用xml资源文件设置稍后在R.id类中使用的ID,并让Android SDK在编译期间为它们提供唯一值。
<强> RES /值/ 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);
答案 1 :(得分:0)
您可以为每个视图使用setId并根据Google开发人员分配任意正数:
设置此视图的标识符。标识符在此视图的层次结构中不必唯一。标识符应为正数。Link
因此您可以使用
EveryView.setId(int);
答案 2 :(得分:0)
这是我在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
}