2017-05-25 24 views
5
fun Tryouts() { 
var CheckBox1 : CheckBox = findViewById(R.id.ForwardBox) as CheckBox 
CheckBox1.setChecked(false) 
} 

Tôi vẫn là người mới bắt đầu học Kotlin, tôi không thể tham khảo bất kỳ widget android nào hoặc thay đổi trạng thái của nó trong Android Studio cho dù đó là TextView hay CheckBox hay RadioBox.
Cùng một lỗi tham chiếu chưa được giải quyết cho findViewById trong mọi trường hợp ...
Tôi không biết điều gì mà tôi đang làm sai, ngay cả khi chuyển đổi java xuất ra cùng một lỗi.Tham chiếu chưa được giải quyết: findViewById trong Kotlin

+1

Lưu ý rằng tôi khuyên bạn nên xem [Tiện ích mở rộng Android Kotlin] (https://kotlinlang.org/docs/tutorials/android-plugin.html), loại bỏ sự cần thiết của 'findViewById () ' –

Trả lời

3
fun Tryouts() { 
    val checkBox = findViewById(R.id.ForwardBox) as CheckBox 
    checkBox.isChecked = false 
} 

Dù sao, hãy xem xét để xác định ID của bạn trong chữ thường separed bởi dấu gạch dưới, ví dụ:

val checkBox = findViewById(R.id.forward_box) as CheckBox 
+0

Tôi đoán ** val ** thậm chí còn tốt hơn trong trường hợp này – DEADMC

+0

@DEADMC bạn đúng – AlexTa

+0

Vâng, điều này không trả lời câu hỏi của OP: lỗi tham chiếu chưa được giải quyết. – Naetmul

4

Trong Kotlin bạn không cần phải sử dụng findViewById, Đơn giản chỉ cần sử dụng id ForwardBox từ kotlinx.android.synthetic.<your layout name>. Tất cả các yếu tố được sử dụng trong mã của bạn được tự động tìm thấy và gán cho cùng tên biến như id trong layout (xml) bởi kotlin.

Ví dụ:

fun init(){ 
    ForwardBox.isChecked = false 
} 
3

Có vẻ như đây là cách đơn giản nhất để thoát khỏi findViewById()

Đến Build.Gradle của bạn (Học phần: ứng dụng)

Thêm dòng sau

apply plugin: 'kotlin-android-extensions' 
  • Sau đó, nó sẽ yêu cầu bạn đồng bộ hóa
  • Sau đó nhấn sync

Sau đó đến tập tin hoạt động của bạn nói nó nhiều được MainActivity.kt

Có nhập Để nhập cái nhìn duy nhất

import kotlinx.android.synthetic.main.<layout_name>.<view_name>; 

hoặc

Để nhập tất cả các chế độ xem

import kotlinx.android.synthetic.main.<layout_name>.*; 

Ví dụ: trong Layout bạn

<Checkbox id="@+/forwardBox" . . . /> 

nó được trong activity_main bố trí sau đó nhập như

import kotlinx.android.synthetic.main.activity_main.forwardBox; 

do đó, hoặc trong chức năng hoặc lớp học của bạn sử dụng nó trực tiếp

forwardBox.isChecked = false 
0

c của bạn ode sai. Hãy thay đổi nó thành cái này.

fun Tryouts() { 
    var CheckBox1 = findViewById(R.id.ForwardBox) as CheckBox 
    CheckBox1.setChecked(false) 
} 

Trong Kotlin, chỉ cần khai báo một biến.Giống như: var abc

abc có thể được khởi tạo bởi bất kỳ loại đối tượng nào.

Nếu chúng ta phải có một cái nhìn từ bố cục thì chúng ta phải viết:

findViewById(R.id.ForwardBox) 

Sau đó đúc quan điểm đó.

findViewById(R.id.ForwardBox) as CheckBox 

Sau đó lưu trữ trong một biến.

var CheckBox1 = findViewById(R.id.ForwardBox) as CheckBox 
Các vấn đề liên quan