2015-08-25 85 views
0

我剛開始使用RxJava的列表的平均水平,這是我的代碼:獲取整數

Observable<Integer> averageObservable = 
MathObservable.averageInteger(Observable.just(11, 2, 3, 4, 5)); 

這是我的錯誤:

java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread. 
      at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62) 
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) 
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
      at java.lang.Thread.run(Thread.java:818) 
    Caused by: java.lang.NoSuchMethodError: No static method identity()Lrx/functions/Func1; in class Lrx/functions/Functions; or its super classes (declaration of 'rx.functions.Functions' appears in /data/app/de.asideas.images-2/base.apk) 
      at rx.observables.MathObservable.averageInteger(MathObservable.java:89) 
      at de.asideas.images.ui.GitHubChallengeFragment$2.call(GitHubChallengeFragment.java:81) 
      at de.asideas.images.ui.GitHubChallengeFragment$2.call(GitHubChallengeFragment.java:61) 
      at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55) 
      at rx.internal.operators.OperatorMerge$InnerSubscriber.emit(OperatorMerge.java:676) 
      at rx.internal.operators.OperatorMerge$InnerSubscriber.onNext(OperatorMerge.java:586) 
      at retrofit.RxSupport$2.run(RxSupport.java:56) 
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
      at retrofit.Platform$Android$2$1.run(Platform.java:142) 
            at java.lang.Thread.run(Thread.java:818) 
    Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: java.util.ArrayList.class 
      at rx.internal.operators.OperatorMerge$InnerSubscriber.emit(OperatorMerge.java:679) 
            at rx.internal.operators.OperatorMerge$InnerSubscriber.onNext(OperatorMerge.java:586) 
            at retrofit.RxSupport$2.run(RxSupport.java:56) 
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
            at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
            at retrofit.Platform$Android$2$1.run(Platform.java:142) 
            at java.lang.Thread.run(Thread.java:818) 

回答

0

您需要訂閱您觀察員。

//create the observable 
Observable<Integer> averageObservable = MathObservable.averageInteger(Observable.just(11, 2, 3, 4, 5)); 

//subscribe to the observer 
averageObservable.subscribe(new Action1<Integer>() { 
     @Override 
     public void call(Integer integer) { 
      Log.d(TAG, "call " + integer); 
      //Result = 5 
     } 
    }); 

我測試的代碼,而無需麻煩的,告訴我,如果你有一個問題:)

+0

我測試過他的代碼,它工作得很好,W/O中進行任何訂閱。 – aga