以编程方式将ID添加到R.id

时间:2010-07-09 20:23:23

标签: android android-edittext unit-testing

我正在创建一个EditText对象,然后我尝试在单元测试中引用它。为此动态创建的对象添加新idR.id的最佳方法是什么,以便稍后我可以在单元测试中通过findViewById()引用它?

3 个答案:

答案 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
}