3
我想顯示progressDialog
,而observable
正在下載文件,並且當它完成後要發送文件給訂閱者。如何創建自定義訂閱者?
我試圖讓我的自定義用戶從Subscriber
延伸例如:
public abstract class MySubscriber<T> extends Subscriber {
abstract void onMessage(String message);
abstract void onDownloaded(File file);
}
,並試圖用它來訂閱: `
MySubscriber mySubscriber = new MySubscriber() {
@Override
public void onMessage(String message) {
progessDialog.setMessage(message);
}
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object o) {
}
};
observable.subscribe(mySubscriber);
觀察到的是:
observable = Observable.create(new Observable.OnSubscribe<Void>() {
@Override
public void call(Subscriber<Void> subscriber) {
//file downloading code...
if (subscriber instanceof MySubscriber){
((MySubscriber) subscriber).onMessage("100%");
((MySubscriber) subscriber).onDownloaded(file);
}else{
Log.e(TAG,"subscriber is not instance of MySubscriber")
}
}
而且答案是「用戶不是MySubscriber的實例」
你可以添加一個例子嗎?我不完全瞭解如何使用它.. – NickUnuchek
@NickUnuchek添加 – AndroidEx
我使用的是下面的版本, 編譯 'io.reactivex:rxandroid:1.2.1' 編譯 'io.reactivex:rxjava:1.1.6' 我獲取ClassCastException OperationSubscriber不能投射到LoginSubscriber。 public static abstract class LoginSubscriber extends Subscriber abstract void onUserNameInvalid(String message); } 以上解決方案對我無效。 這個@AndroidEx的任何解決方案 我想用我的自定義方法實現以下內容:https://github.com/music60/RxAndroid-MVP-Simple/tree/master/app/src/main/java/com/studyjun/rxandroidmvpsimple –