เพิ่ม id ใน Rid โดยทางโปรแกรม


91

ฉันกำลังสร้างEditTextวัตถุที่ฉันพยายามอ้างอิงในการทดสอบหน่วย อะไรคือวิธีที่ดีที่สุดที่จะเพิ่มใหม่idเพื่อR.idสำหรับวัตถุนี้สร้างขึ้นแบบไดนามิกเพื่อให้ผมมารู้ทีหลังสามารถอ้างอิงได้ผ่านทางfindViewById()ในการทดสอบหน่วย?


คำตอบ:


209

คุณสามารถตั้งค่า ID ที่จะใช้ในภายหลังในคลาส Rid โดยใช้ไฟล์ทรัพยากร xml และให้ 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);

1
ฉันสามารถเรียกไฟล์ anothername.xml ได้หรือไม่
ofir_aghai

2
ขออภัยสำหรับการตอบกลับช้า แต่ใช่เช่นเดียวกับทรัพยากร Android ทั้งหมดคุณสามารถตั้งชื่อ. xml ได้ตามที่คุณต้องการ ...
Hidden Android

2

คุณสามารถใช้ setId สำหรับทุกข้อมูลพร็อพเพอร์ตี้และกำหนดจำนวนบวกใด ๆ โดยอ้างอิงจากนักพัฒนา Google

ตั้งค่าตัวระบุสำหรับมุมมองนี้ ตัวระบุไม่จำเป็นต้องไม่ซ้ำกันในลำดับชั้นของมุมมองนี้ ตัวระบุควรเป็นจำนวนบวก ลิงค์

เพื่อให้คุณสามารถใช้

EveryView.setId(int);

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
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.