Po uaktualnieniu do kompilacji SDK
wersji 26, wszystkie findViewById
błąd pokazując:Błąd na findViewById po uaktualnieniu do kompilacji wersji SDK
not enough information to infer parameter T in fun findViewById(id: Int): T!
Po uaktualnieniu do kompilacji SDK
wersji 26, wszystkie findViewById
błąd pokazując:Błąd na findViewById po uaktualnieniu do kompilacji wersji SDK
not enough information to infer parameter T in fun findViewById(id: Int): T!
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);
}
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.
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)
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
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