[英]How do you define a reference to a view in Android Studio?
我正在嘗試運行第 5 章“Android Application Development All-in-One for Dummies”中的代碼。
書中的代碼直接參考了onButtonClick中的viewId's function
fun onButtonClick(view: View){
...
if (checkBox.isChecked()){
...
}
但 Android Studio 將復選框突出顯示為未解決的參考。
我試過的
我試着改變
fun onButtonClick(view: View){
...
val checkBox = view.findViewById<CheckBox>(R.id.checkBox)
if (checkBox.isChecked()){
...
}
但是在運行時使用checkBox崩潰的是null。 我查看了如何通過 android 中的屬性添加對另一個視圖的引用? 並嘗試改變
fun onButtonClick(view: View){
...
val vp : ViewGroup = view.getParent()
val checkBox = vp.findViewById<CheckBox>(R.id.checkBox)
if (checkBox.isChecked()){
...
}
但是類型不匹配:推斷類型是 ViewParent(沒有 findViewByID)
讓我寫一個完整的答案
你說:
書中的代碼直接參考了onButtonClick中的viewId's function
這些是 kotlin 的合成導入,但它們已被棄用,新項目默認不再添加這些。 所以你的選擇是ViewBinding
或findViewById
在您的情況下(沒有看到您的代碼)
我將假設您只需要findViewById
而不需要視圖參考,因此您應該能夠:
fun onButtonClick(view: View){
...
val checkBox = findViewById<CheckBox>(R.id.checkBox)
if (checkBox.isChecked()){
...
}
以下代碼中發生了什么:
fun onButtonClick(view: View) {
好吧,觸發了 onButtonClick 的視圖被傳遞,所以在你的情況下,如果你按下一個按鈕,那么實際的按鈕會在這里傳遞給你,所以如果你使用view.findViewById<CheckBox>(R.id.checkBox)
你試圖在按鈕本身上找到你的復選框,這不起作用。
通過僅使用findViewById<CheckBox>(R.id.checkBox)
,這是對根布局的引用,然后應該找到您的復選框
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.