2016-05-12 7 views
0

rxJavaの新しい機能私は、ネスト化されたオブザーバブルによってObservableを取得するために苦労しています。 コードブロックについて.map(userResponse -> { data.put final Intent resd = new Intent(); resd.putExtras(data); return (Intent)resd; });Retrofit RxJavaのネストされたオブザーバブルの循環推論

私は周期的推論エラーを受け取ります。 私がコンパイルしようとすると、私は私はかなりのように理解していない奇妙なメッセージが出ます:ここ

Error:(52, 21) error: incompatible types: cannot infer type-variable(s) R (argument mismatch; bad return type in lambda expression Intent cannot be converted to Observable) where R,T are type-variables: R extends Object declared in method flatMap(Func1>) T extends Object declared in class Observable

コードは次のとおりです。

public Observable<Intent> createUser(final String email) { 
    Bundle data = new Bundle(); 
    return mWebservice.clientAuth("myFakeClientId") //returns an Observable<AccessToken> 
      .map(clientTokenObject -> { 
       String clientToken = clientTokenObject.accessToken; 
       Observable<Response<User>> userResponseObservable = mWebservice.createAccount(email); 
       Observable<Intent> resultObs = userResponseObservable 
           .map(userResponse -> { 
            final Intent resd = new Intent(); 
            resd.putExtras(data); 
            return (Intent)resd; 
           }); 
         return resultObs; 
        }); 
} 

;(

答えて

3

あなたのマッピングが間違っているあなたを。

public Observable<Intent> createUser(final String email) { 

    return mWebservice.clientAuth("myFakeClientId") //returns an Observable<AccessToken> 
         .map(clientTokenObject -> clientTokenObject.accessToken) 
         .flatMap(accessToken -> { mWebservice.createAccount(email). 
                 .map(userResponse -> { 
                   final Intent resd = new Intent(); 
                   Bundle data = new Bundle(); 
                   resd.putExtras(data); 
                   return (Intent)resd; 
                  })}); 

}

ようなものが必要
+0

あなたの答えをありがとう、私は同じことを見つけた(しかし、それは偶然に物事を試していた...)私は本当にmap()ant fatMap()(アパート平らなもの)の違いを得ることはありませんあなたの答え – gropapa

+0

大理石図が役立ちます。 [フラットマップのドキュメントの図](http://reactivex.io/documentation/operators/flatmap.html)を確認してください。 – JohnWowUs

関連する問題