2016-05-31 9 views
1

Ich muss eine einfache Sache machen: wenn mein Feld, welcher vorheriger Zustand null war, nicht null wird, mache ein paar Sachen. Wenn es vorher nicht null war, sollte die Einreichung auch einmal durchgeführt werden. Dazu habe ich diesen Code erstellt:Call on object bekomme nicht null null

Observable.just(object).filter(new Func1<Object, Boolean>() { 
      @Override 
      public Boolean call(Object o) { 
       return o != null; 
      } 
     }).subscribe(new Action1<Object>() { 
      @Override 
      public void call(Object o) { 
       Toast.makeText(MainActivity.this, "Object is non-null", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

Obwohl es nicht funktioniert. Was soll ich machen?

Jede Hilfe würde freundlich geschätzt werden.

+0

Sind Sie sicher, dass Ihr Objekt nicht null ist? Ich habe Ihren Code getestet und es hat für mich gut funktioniert, Sie können im Aufruf des Filters ein 'System.out.println (o! = Null);' hinzufügen und es überprüfen. – psantamaria

Antwort

1

Möglicherweise möchten Sie BehaviorSubject verwenden, um einen Wert zu speichern und anzuwenden distinctUntilChanged mit einem Null-Check auf Veränderungen reagieren:

BehaviorSubject<Object> bs = BehaviorSubject.create(); 

bs.distinctUntilChanged(v -> v != null) 
.doOnNext(v -> System.out.println(v)) 
.subscribe(); 

bs.onNext(1); 
bs.onNext(2); 
bs.onNext(null); 
bs.onNext(null); 
bs.onNext(3); 
Verwandte Themen