Android 我如何在不同的类中连接改型和RxJava?

Android 我如何在不同的类中连接改型和RxJava?,android,android-studio,rx-java,androidx,android-mvp,Android,Android Studio,Rx Java,Androidx,Android Mvp,我有一些类作为演示者,在这些类中,我对一些方法使用了改进。但有些方法是重复的。所以我想使用一个类来进行所有的改造,并连接到服务器方法,并在需要时调用它们。 但是当我创建那个类时,它有NullpointerException错误 如果你能帮助我,我将非常感激 这是演示者代码: public class DefinitionPresenter implements DefinitionContract.Presenter { private KalaBeanDataSource kalaBe

我有一些类作为演示者,在这些类中,我对一些方法使用了改进。但有些方法是重复的。所以我想使用一个类来进行所有的改造,并连接到服务器方法,并在需要时调用它们。 但是当我创建那个类时,它有NullpointerException错误

如果你能帮助我,我将非常感激

这是演示者代码:

public class DefinitionPresenter implements DefinitionContract.Presenter {
    private KalaBeanDataSource kalaBeanDataSource;
    private DefinitionContract.View view;
    private CompositeDisposable compositeDisposable = new CompositeDisposable();
    private DatabaseMethods databaseMethods;
    private ActivityKindList activityKindList;

    public DefinitionPresenter(KalaBeanDataSource kalaBeanDataSource){
        this.kalaBeanDataSource = kalaBeanDataSource;
        databaseMethods = new DatabaseMethods(kalaBeanDataSource,compositeDisposable);
        activityKindList = new ActivityKindList();
    }


    @Override
    public void attachView(DefinitionContract.View view) {
        this.view = view;
    }

    @Override
    public void detachView() {
        view = null;
        if(compositeDisposable != null && compositeDisposable.size() > 0){
            compositeDisposable.clear();
        }
    }


    @Override
    public void activityKind() {
        activityKindList = databaseMethods.getActivityKind();
        if(activityKindList.getItems().size() > 0){
            view.getActivityKind(activityKindList);
        }else{
            view.showMessage(databaseMethods.message);
        }
    }

}
这是我创建的一个类,用于通过改造和RxJava从服务器获取数据

public  class DatabaseMethods {
    private KalaBeanDataSource kalaBeanDataSource;
    private CompositeDisposable compositeDisposable;
    private ActivityKindList activityKindListResult;
    public String message = null;


    public  DatabaseMethods(KalaBeanDataSource kalaBeanDataSource,CompositeDisposable compositeDisposable){
        this.kalaBeanDataSource = kalaBeanDataSource;
        this.compositeDisposable = compositeDisposable;
        activityKindListResult = new ActivityKindList();
    }

    public  ActivityKindList getActivityKind(){
        kalaBeanDataSource.getActivityKind().subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new SingleObserver<ActivityKindList>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                            compositeDisposable.add(d);

                    }

                    @Override
                    public void onSuccess(ActivityKindList activityKindList) {
                        activityKindListResult = activityKindList;
                    }

                    @Override
                    public void onError(Throwable e) {
                        message = e.toString();
                    }
                });

        if(message == null && activityKindListResult.getItems().size() > 0){
            return activityKindListResult;
        }else{
            return null;
        }
    }
公共类数据库方法{
私人KalaBeanDataSource KalaBeanDataSource;
私有可组合可组合;
私有活动KindList活动KindListResult;
公共字符串消息=null;
公共数据库方法(KalaBeanDataSource KalaBeanDataSource,CompositeDisposable CompositeDisposable){
this.kalaBeanDataSource=kalaBeanDataSource;
this.compositeDisposable=compositeDisposable;
activityKindListResult=新建ActivityKindList();
}
公共活动种类列表getActivityKind(){
KalabeandaSource.getActivityKind().subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新的SingleObserver(){
@凌驾
认购的公共无效(一次性d){
可合成。添加(d);
}
@凌驾
成功时公共作废(ActivityKindList ActivityKindList){
activityKindListResult=activityKindList;
}
@凌驾
公共无效申报人(可丢弃的e){
message=e.toString();
}
});
if(message==null&&activityKindListResult.getItems().size()>0){
返回activityKindListResult;
}否则{
返回null;
}
}

此方法始终返回空值:

 public  ActivityKindList getActivityKind(){
    kalaBeanDataSource.getActivityKind().subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new SingleObserver<ActivityKindList>() {
                @Override
                public void onSubscribe(Disposable d) {

                        compositeDisposable.add(d);

                }

                @Override
                public void onSuccess(ActivityKindList activityKindList) {
                    activityKindListResult = activityKindList;
                }

                @Override
                public void onError(Throwable e) {
                    message = e.toString();
                }
            });

    if(message == null && activityKindListResult.getItems().size() > 0){
        return activityKindListResult;
    }else{
        return null;
    }
}
public ActivityKindList getActivityKind(){
KalabeandaSource.getActivityKind().subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新的SingleObserver(){
@凌驾
认购的公共无效(一次性d){
可合成。添加(d);
}
@凌驾
成功时公共作废(ActivityKindList ActivityKindList){
activityKindListResult=activityKindList;
}
@凌驾
公共无效申报人(可丢弃的e){
message=e.toString();
}
});
if(message==null&&activityKindListResult.getItems().size()>0){
返回activityKindListResult;
}否则{
返回null;
}
}
1) 使此方法无效

2) 创建一个接口并在
onSuccess()和
onError()中调用它

3) 在演示者中实现接口