2016-12-13 7 views
2

RxJava 1では、私はRxJava 2では今、このRxJava2

private void doLogin() { 

     final ProjectApi service = RetrofitService.createRetrofitClient(); 
     staticsubscription = service.service.getLogin(new PostLoginPojo("","", new Mobsess("","","","",""))) 
       .subscribeOn(Schedulers.newThread()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribe(staticObserver); 

    } 
Observer<ApiLogin> getLoginObserver = new Observer<ApiLogin>() { 

     @Override 
     public void onCompleted() { 
      staticsubscription.unsubscribe(); 
     } 

     @Override 
     public void onError(Throwable e) { 
      // Called when the observable encounters an error 
      // Log.d(TAG, ">>>> onError gets called : " + e.getMessage()); 
     } 

     @Override 
     public void onNext(ApiLogin staticData) { 


     } 
    }; 

ようなものをやっていた 私はこの
が編集のようにそれを変換しようとしています: -

private void doLogin(){ 

     final ProjectApi service = RetrofitService.createRetrofitClient(); 
     Disposable disposable = service.getLogin(new PostLoginPojo("","", new Mobsess("","","","",""))) 
       .subscribeOn(Schedulers.io()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribe(getLoginObserver()); 

    } 

    public DisposableObserver<ApiLogin> getLoginObserver() { 
    return new DisposableObserver<ApiLogin>() { 
     @Override 
     public void onNext(ApiLogin value) { 

     } 

     @Override 
     public void onError(Throwable e) { 

     } 

     @Override 
     public void onComplete() { 

     } 
    }; 
} 

私のプロジェクトApiは

public interface ProjectApi { 
    String login = "customer/validate"; 

    @POST(login) 
    Observable<ApiLogin> getLogin(@Body PostLoginPojo post); 
} 

そして、これレトロフィットサービスは以下のとおりです。 -

public class RetrofitService { 
    private final static String API_URL = AppUrl.baseUrl ; 
    public RetrofitService(){ 
    } 
    public static ProjectApi createRetrofitClient() { 
     HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
     interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
     OkHttpClient client = new OkHttpClient.Builder(). 
       addInterceptor(interceptor).build(); 

     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(API_URL) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 
       .client(client) 
       .build(); 


     return retrofit.create(ProjectApi.class); 
    } 
} 

エラー:私はエラー "互換性のない型" .subscribe(getLoginObserver())に を取得していますincompatible types: void cannot be converted to Disposable

必要な "io.reacivex.disposbles.Disposableは" 見つかった "ボイド"

私はここで間違っていますか? おかげ

答えて

3

subscribe戻りvoid今、

public Observer<ApiLogin> getLoginObserver() 

DisposableObserver<ApiLogin>を返す必要があり、その後、あなたは私がDisposableObserver を返していたとしても、それは、問題であること

subscribeWith(getLoginObserver()); 
+0

を使用することができるはずですその "空"と言っています。 – imagngames

+1

は 'DisposableObserver'を使っているコードと正確なエラーを表示しています。 'getLogin'の定義の定義を投稿してください。 'subscribeWith'を購読しないでください – Blackbelt

+0

が私の質問を更新しました。 – imagngames

関連する問題