2016-07-20 12 views
12

Próbuję utworzyć prostą, niezwiązaną usługę w kotlinach, ale nie mogę. Kiedy przesłonię metodę onBind() w Javie, mogę zwrócić null, ale w kotlinach jest napisane, że mogę tylko zwrócić IBinder, a nie IBinder?, co oznacza, że ​​nie może być null. Wszelkich pomysłów, jak to naprawić, z wyjątkiem przepisywania klasy MyService na Javę?Tworzenie usługi niezwiązanej w Kotlin

[SOLVED] Dziękuję, chłopaki! Naprawdę mogę zmienić IBinder na IBinder?. To działa!!

+4

Jakiej wersji kotlinu używasz? Korzystając z wersji 1.0.3, kiedy przekonwertowałem usługę, podpis metody brzmi: "override fun onBind (intent: Intent): IBinder?" I generowanie nadpisania w Android Studio dało mi 'override fun onBind (intent: Intent?): IBinder', ale Mogłem to zmienić na "IBinder?" Bez problemu – Enrico

Odpowiedz

11

Jak wspomniał Enrico, można zmienić typ IBinder na IBinder? i nadal będzie pasował do interfejsu.

Generalnie należy zachować ostrożność podczas korzystania ze studia Android w celu nadpisania metod systemu Android. Prawdziwy problem pojawia się, gdy generuje typ nie-zerowy, gdy system faktycznie może zwrócić referencję zerową. Powoduje on wyjątki kotłów czasu wykonywania, których naprawdę się nie spodziewasz.

Jeśli dobrze pamiętam, miałem wiele problemów podczas przeciążania klasy Fragment i metod związanych z tworzeniem View.