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();
    }
}

0 ответов

Другие вопросы по тегам