Android 我如何在不同的类中连接改型和RxJava?
我有一些类作为演示者,在这些类中,我对一些方法使用了改进。但有些方法是重复的。所以我想使用一个类来进行所有的改造,并连接到服务器方法,并在需要时调用它们。 但是当我创建那个类时,它有NullpointerException错误 如果你能帮助我,我将非常感激 这是演示者代码: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
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) 在演示者中实现接口