ClassCastException в переключателе Android
Я получаю ошибку ClassCastException при выполнении переключения в этом коде:
private void performLogin(String email, String pass, String version, String platform) {
if (viewIsAttached()) {
getView().showProgress();
modelLogin.login(email, pass, version, platform, new OnStateChangeListener() {
@Override
public void onCompleted() {
if (viewIsAttached()) getView().hideProgress();
}
@Override
public void onError(ApiError error) {
if (viewIsAttached()) {
switch (error.getCode()){ //ERROR IN THIS LINE
case 418: //UPDATE
getView().openUpdateDialog();
break;
case HTTP_BAD_REQUEST:
getView().showInvalidUserError();
break;
default:
getView().showErrorGeneral();
break;
}
}
}
@Override
public void onSuccess(ResponseLogin data) {
//go to home
}
});
}
}
К сожалению, это ошибка, которую я не могу воспроизвести, но в Fabric я получаю эту ошибку на нескольких устройствах и не могу понять, почему.
com.omnidoctor.omniapp.screens.login.LoginPresenter$1.onError (LoginPresenter.java:103)
com.omnidoctor.omniapp.screens.login.LoginModel$1.onError (LoginModel.java:45)
rx.observers.SafeSubscriber._onError (SafeSubscriber.java:153)
rx.observers.SafeSubscriber.onError (SafeSubscriber.java:115)
rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated (OperatorObserveOn.java:273)
rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call (OperatorObserveOn.java:216)
rx.android.schedulers.LooperScheduler$ScheduledAction.run (LooperScheduler.java:107)
android.os.Handler.handleCallback (Handler.java:739)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:740)
Это ошибка, которую я имею, и строка, где это происходит,
switch (error.getCode())
ОБНОВИТЬ:
Класс ApiError:
public class ApiError extends Throwable {
private final Throwable error;
public ApiError(Throwable e) {
super(e);
this.error = e;
}
public boolean isAuthFailure() {
return error instanceof HttpException && ((HttpException) error).code() == HTTP_UNAUTHORIZED;
}
public boolean isUserInvalid() {
return error instanceof HttpException && ((HttpException) error).code() == HTTP_BAD_REQUEST;
}
public boolean appShouldUpdate() {
return error instanceof HttpException && ((HttpException) error).code() == 418;
}
public boolean isResponseNull() {
return error instanceof HttpException && ((HttpException) error).response() == null;
}
public int getCode(){
return ((HttpException) error).code();
}
}