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

Ich bin immer noch ein Anfänger in Kotlin nur die grundlegenden Arbeits Kotlin gelernt zu haben, vermag ich nicht zu jedem Android-Widget zu beziehen oder es ist Zustand in Android Studio ändern, ob es Textview oder CheckBox oder RadioBox.
Gleiche nicht aufgelöste Referenzfehler für findViewById in allen Fällen ...
Ich weiß nicht, was ich falsch mache, sogar Java-Konvertierung gibt die gleichen Fehler aus.Ungelöste Referenz: findViewById in Kotlin

+1

Als Randbemerkung eliminiert Ich würde empfehlen, einen Blick auf [Kotlin Android Erweiterungen] (https://kotlinlang.org/docs/tutorials/android-plugin.html) nehmen, wodurch die Notwendigkeit für 'findViewById () ' –

Antwort

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

Wie auch immer, sollten Sie Ihre IDs in Klein von Unterstrichen zum Beispiel separed definieren:

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

Ich denke ** val ** ist in diesem Fall noch besser – DEADMC

+0

@ DEADMC Sie haben Recht – AlexTa

+0

Nun, dies beantwortet nicht die Frage des OP: ungelöste Referenzfehler. – Naetmul

4

In Kotlin Sie verwenden müssen nicht verwenden findViewById, einfach id ForwardBox von kotlinx.android.synthetic.<your layout name>. Alle verwendeten Elemente in Ihrem Code werden automatisch gefunden und dem gleichen Variablennamen wie ids im Layout (xml) von Kotlin zugewiesen.

Zum Beispiel:

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

Es scheint dies der einfachste Weg, um Ihre Build.Gradle loszuwerden findViewById()

Go ist (Modul: app)

Fügen Sie die folgende Zeile

apply plugin: 'kotlin-android-extensions' 
  • Dann wird es Sie fragen
  • Drücken Sie dann Sync

Danach kommen auf Ihre Aktivität Datei Sagen Sie es viele sein MainActivity.kt

Es einzigen Ansicht zu importieren, importieren zu synchronisieren

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

oder

Um alle Ansichten

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

Beispiel: in Ihrem Layout

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

es in activity_main Layout dann importieren als

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

so entweder in Ihrer Funktion oder Klasse es

forwardBox.isChecked = false 
direkt verwenden
0

Ihr c Ode ist falsch. Bitte ändere es zu diesem.

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

In Kotlin, nur eine Variable deklarieren.Wie: var abc

abc kann durch jede Art von Objekt initialisiert werden.

Wenn wir eine Ansicht von Layout nehmen, dann müssen wir schreiben:

findViewById(R.id.ForwardBox) 

Dann diese Ansicht werfen.

findViewById(R.id.ForwardBox) as CheckBox 

Dann in einer Variablen speichern.

var CheckBox1 = findViewById(R.id.ForwardBox) as CheckBox 
Verwandte Themen