开发者

programmatically add id to R.id

I am creating an EditText object which I then try to reference in a unit test. What is the best way to add a new id to R.id for this 开发者_如何学Cdynamically created object, so that I can later reference it via findViewById() in the unit test?


You can set ID's you'll use later in R.id class using an xml resource file, and let Android SDK give them unique values during compile time.

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>

To use it in code:

myEditTextView.setId(R.id.my_edit_text_1);


You can use setId for every view and assign any positive number, based on google developer:

Sets the identifier for this view. The identifier does not have to be unique in this view's hierarchy. The identifier should be a positive number.Link

so you can use

EveryView.setId(int);


Here's my solution as an extension function in 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
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜