Я использую
Android Studio 3.2.1 ,
rxjava: 2.2.0 ,
Плагин Kotlin версии 1.3.11-release-Studio3.2-1
После ввода *.kt
файла: Observable.unsafeCreate{}
и нажатия Ctrl + Пробел между {}
Android Studio показывает следующее предложение:
То же самое предложение Android Studio показывает, когда я набираю *.java
файл.
Я не вносил никаких изменений в настройки Android Studio.
Я полагаю, вы импортируете Observable
из rx
- первый элемент в списке завершения на изображении ниже. Попробуйте импортировать Observable
из io.reactivex
- выделенный элемент в списке завершения ниже, это может помочь: import io.reactivex.Observable
.
Для его использования необходимо импортировать rxjava2:
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
РЕДАКТИРОВАТЬ :
Как было выяснено, диалог завершения кода показал t ->
, потому что параметр в Action1.call(T t)
называется t
. Мы можем увидеть это, если посмотрим на сигнатуру метода rx.Observable.unsafeCreate
в RxJava 1.3 :
public static <T> Observable<T> unsafeCreate(OnSubscribe<T> f) {
return new Observable<T>(RxJavaHooks.onCreate(f));
}
OnSubscribe
интерфейс расширяется Action1<Subscriber<? super T>
, а Action1
имеет следующую подпись:
public interface Action1<T> extends Action {
void call(T t);
}
Таким образом, параметр называется t
, а Android Studio предлагает его как t ->
.
В RxJava2 у нас другая подпись:
public static <T> Observable<T> unsafeCreate(ObservableSource<T> onSubscribe) {...}
public interface ObservableSource<T> {
void subscribe(@NonNull Observer<? super T> observer);
}
Мы видим, что в ObservableSource.subscribe()
параметр метода называется observer
, поэтому мы видим его как observer->
.
Заключение :
Предложение IDEA основано на имени параметра метода функционального интерфейса, который вы реализуете как лямбда.