2017-04-11 21 views
0

我想通過網絡發送多個請求,這tutorial 幫助,但我卡在後半部分。 似乎我預計將從onSubscribe,onNext,...返回一個值(OrderValues)... 因爲apply函數返回一個值。但是,onNext默認返回void。 任何幫助嗎?這是我的一段代碼zip rxjava運營商不能解決方法訂閱

Observable<Restaurant> orderRestaurant= IdentityClient.getAPIService() 
     .getRestaurantById(restaurantId) 
     .subscribeOn(Schedulers.newThread()) 
     .observeOn(AndroidSchedulers.mainThread()); 

    Observable<Menu> orderMenu= IdentityClient.getAPIService() 
     .getMenuById(menuId) 
     .subscribeOn(Schedulers.newThread()) 
     .observeOn(AndroidSchedulers.mainThread()); 

    Observable<User> orderUser= IdentityClient.getAPIService() 
     .getUserById(userId) 
     .subscribeOn(Schedulers.newThread()) 
     .observeOn(AndroidSchedulers.mainThread()); 

    Observable<OrderValues> combineValues=Observable.zip(orderRestaurant, 
    orderMenu, orderUser, 
     new Function3<Restaurant, Menu, User, OrderValues>() { 
    @Override 
    public OrderValues apply(Restaurant restaurant, Menu menu, User user) 
    throws Exception { 
     return new OrderValues(restaurant,menu,user); 
    } 
I get an error here "cannot resolve method 'subscribe anonymous 
org.reactivestreams.Subscriber(....OrderValues) 
    }).subscribe(new Subscriber<OrderValues>() { 
    @Override 
    public void onSubscribe(Subscription s) { 

    } 

    @Override 
    public void onNext(OrderValues orderValues) { 

    } 

    @Override 
    public void onError(Throwable t) { 

    } 

    @Override 
    public void onComplete() { 

    } 
    }); 

Error displayed

+0

您能否提供帶錯誤信息的截圖? – Gaket

+0

Hi @Gaket。張貼編輯請 –

回答

1

我假設你正在使用RxJava 2.

使用Observer而不是Subscriber。也不要將結果分配給新的Observable(你稱之爲combineValues)。

private void myMethod() { 
    Observable.zip(orderRestaurant, orderMenu, orderUser, new Function3<Restaurant, Menu, User, OrderValues>() { 
       @Override 
       public OrderValues apply(@NonNull Restaurant restaurant, @NonNull Menu menu, @NonNull User user) throws Exception { 
        return new OrderValues(restaurant, menu, user); 
       } 
      }).subscribe(new Observer<OrderValues>() { 
       @Override 
       public void onSubscribe(Disposable d) { 

       } 

       @Override 
       public void onNext(OrderValues orderValues) { 

       } 

       @Override 
       public void onError(Throwable e) { 

       } 

       @Override 
       public void onComplete() { 

       } 
      }); 
     } 
    } 
+1

我不能像你所做的那樣創建Observable。當我嘗試做Observable.zip()情報不顯示爲.zip,我得到了無法解析的方法zip –

+0

你是什麼意思? – GVillani82

+0

你確定你正在執行方法內的代碼嗎? – GVillani82