programmatically add id to R.id

后端 未结 3 573
庸人自扰
庸人自扰 2020-11-28 05:08

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 d

相关标签:
3条回答
  • 2020-11-28 05:30

    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 讨论(0)
  • 2020-11-28 05:36

    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);
    
    0 讨论(0)
  • 2020-11-28 05:37

    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);
    
    0 讨论(0)
提交回复
热议问题