Daha EditTextsonra bir birim testinde başvurmaya çalıştığım bir nesne oluşturuyorum . Yeni eklemek için en iyi yolu nedir idiçin R.idbu dinamik olarak oluşturulan nesne için daha sonra yoluyla başvurmak, böylece findViewById()birim test?
Yanıtlar:
Daha sonra R.id sınıfında kullanacağınız ID'leri bir xml kaynak dosyası kullanarak ayarlayabilir ve Android SDK'nın derleme sırasında onlara benzersiz değerler vermesine izin verebilirsiniz.
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>
Kodda kullanmak için:
myEditTextView.setId(R.id.my_edit_text_1);
Google geliştiricisine bağlı olarak her görünüm için setId kullanabilir ve herhangi bir pozitif sayı atayabilirsiniz:
Bu görünüm için tanımlayıcıyı ayarlar. Bu görünümün hiyerarşisinde tanımlayıcının benzersiz olması gerekmez. Tanımlayıcı pozitif bir sayı olmalıdır. Bağlantı
yani kullanabilirsin
EveryView.setId(int);
İşte kotlin'deki bir uzantı işlevi olarak çözümüm:
/* 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
}