2017-06-09 34 views

Odpowiedz

14

To dlatego, jak Android O, nie trzeba go rzucić. Istnieje kilka opcji. Wymienić:

val textInput = findViewById(R.id.edit_text) as TextInputLayout 

albo:

val textInput:TextInputLayout = findViewById(R.id.edit_text) 

Lub:

val textInput = findViewById<TextInputLayout>(R.id.edit_text) 

Jeśli chcesz wiedzieć, co stało się pod kołdrą, a od O metodzie bazowego zmienia się

public <T extends View> T findViewById(@IdRes int id) { 
    return this.getDelegate().findViewById(id); 
} 
0

Bo jesteś confu śpiewać java z kotlin, z android studio 3.0 można użyć kotlin zamiast java składni czy można używać zarówno jak wspomniano na Android official blog

także przeczytać o Get Started with Kotlin on Android

Aktualizacja: podpisu funkcji View findViewById(int id)

ma został zaktualizowany do <T extends View>T findViewById(int id) oznacza, że ​​stosuje mechanizm wnioskowania dla typu zwrotu, gdzie T extends View oznacza widok lub jego podtypy

Uwaga: Tak jak wspomniano na wstępie, zastosowanie rzutowania nadal nie spowoduje żadnego błędu, ale tylko niestrzępiące się ostrzeżenie o ostrzeżeniu o używaniu niepotrzebnego rzutu, ale może być błędem w wnioskowaniu typu kotlinowego, ale nie w java.

+1

powinienem wyjaśnić , to pytanie dotyczyło projektu Kotlin. W Androidzie O zmieniono metodę findViewById, więc nie musimy już jej przesyłać. W języku java nie musimy już przesyłać. – bond

4

W czystej Javie trzeba będzie na przykład

TextView textView = findViewById(R.id.textview1); 

W Kotlin można iść z tym

val textView = findViewById<TextView>(R.id.textview1) 
0

To Kotlin jakiś rodzaj spodziewać błąd naprawić

val result = findViewById <TextView>(R.id.textView_result) as TextView 
val button_sum = findViewById<Button>(R.id.button_sum) as Button 
val editText_i1 = findViewById<EditText>(R.id.editText_i1) as EditText