Rxjava: can't resolve method 'subscribe (org.reactivestreams.Subscribe<>)

Created on 2 Aug 2017  ·  1Comment  ·  Source: ReactiveX/RxJava

when I used "observable.subscribe(subscriber);", it show can't resolve method 'subscribe (org.reactivestreams.Subscribe<>). But when I used "observable.subscribe(observable);", it is right. My code is as follows:

                Map<String, String> paramMap = new HashMap<>();
                paramMap.put("user_name", "guojinjin");
                paramMap.put("user_password", "1");
                paramMap.put("user_language", "ZHS");
                paramMap.put("is_ipad", "N");
                paramMap.put("is_mobile", "Y");

                Retrofit retrofit= new Retrofit.Builder()
                        .baseUrl("http://211.149.247.188/")
                        //增加返回值为String的支持
                        .addConverterFactory(ScalarsConverterFactory.create())
                        //增加返回值为Gson的支持(以实体类返回)
                        .addConverterFactory(GsonConverterFactory.create())
                        //增加返回值为Oservable<T>的支持
                        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                        .build();

                TestService testService = retrofit.create(TestService.class);
                Observable<TestModel> observable = testService.getTestModel(paramMap);
                Subscriber<TestModel> subscriber = new Subscriber<TestModel>() {
                    @Override
                    public void onSubscribe(Subscription s) {

                    }

                    @Override
                    public void onNext(TestModel course) {
                        Log.d("onNext", course.getEncryted_session_id());
                    }

                    @Override
                    public void onError(Throwable t) {

                    }

                    @Override
                    public void onComplete() {

                    }
                };
                observable.subscribeOn(Schedulers.newThread()).subscribe(subscriber);

                Observer observer = new Observer<TestModel>() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {
                        Log.i("onSubscribe", "onSubscribe");
                    }

                    @Override
                    public void onNext(TestModel testModel) { // 上面 subscriber.onNext(result)在这里回调
                        Log.i("onNext", testModel.getEncryted_session_id()+testModel.isSuccess());
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i("onError", e.toString());
                        e.printStackTrace();
                    } // 上面subscriber.onError(new Throwable(msg))在这里回调

                    @Override
                    public void onComplete() {
                        Log.i("onComplete", "onComplete");
                    }
                };
                observable.subscribeOn(Schedulers.newThread()).subscribe(observer);
2.x Question

Most helpful comment

In v2, the consumer types have changed:

io.reactivex.Observable <- io.reactivex.Observer
io.reactivex.Flowable <- org.reactivestreams.Subscriber

You can't use Subscriber with Observable.

Please read the wiki regarding what changed between versions.

>All comments

In v2, the consumer types have changed:

io.reactivex.Observable <- io.reactivex.Observer
io.reactivex.Flowable <- org.reactivestreams.Subscriber

You can't use Subscriber with Observable.

Please read the wiki regarding what changed between versions.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

aballano picture aballano  ·  3Comments

dzharikhin picture dzharikhin  ·  4Comments

perlow picture perlow  ·  3Comments

dsvoronin picture dsvoronin  ·  4Comments

archenroot picture archenroot  ·  3Comments