Я изучаю Котлин. У меня странная ситуация.
У меня есть метод в java:
@Override
public NavDestination navigate(@NonNull Destination destination,
@Nullable Bundle args,
@Nullable NavOptions navOptions,
@Nullable Extras navigatorExtras) {
....
return navDestination ;
}
и код на Котлине
override fun navigate(destination: Destination,
args: Bundle?,
navOptions: NavOptions?,
navigatorExtras: Extras?) {
....
}
Мой вопрос: почему метод в Котлине ничего не возвращает? Когда мы ищем документы https://developer.android.com/reference/androidx/navigation/Navigator.html#navigate(D,%20android.os.Bundle,%20androidx.navigation.NavOptions,%20androidx.navigation.Navigator.Extras)
Вы можете видеть, что метод что-то возвращает.
Спасибо за ответ.
Компилируется ли код kotlin? Вы использовали автоматическое преобразование кода? Может быть, это просто ошибка конвертера кода?
Ваша функция должна быть: override fun navigate(destination: Destination, args: Bundle?, navOptions: NavOptions?, navigatorExtras: Extras?): NavDestination и, конечно же, вам нужен оператор возврата внутри блока функции.
Просто добавьте оператор return внутри метода.
Метод работает. Полный код: github.com/STAR-ZERO/navigation-dialog-sample/blob/master/app/…




В ссылке на документацию вы упоминаете ссылки на релиз 1.0.0 библиотеки. Но вы используете версию 1.0.0-alpha06. Сигнатура метода изменилась с alpha06
public abstract void navigate(@NonNull D destination, @Nullable Bundle args, @Nullable NavOptions navOptions, @Nullable Extras navigatorExtras);
в 1.0.0 стабильный:
public abstract NavDestination navigate(@NonNull D destination, @Nullable Bundle args, @Nullable NavOptions navOptions, @Nullable Extras navigatorExtras);
Если вы измените в своем build.gradle следующие зависимости
implementation "android.arch.navigation:navigation-fragment-ktx:1.0.0"
implementation "android.arch.navigation:navigation-ui-ktx:1.0.0"
вы получите ошибку компилятора из-за отсутствия оператора return.
My question is: Why does the method in Kotlin not return anythingпотому что в вашем коде kotlin нетreturn?