ClassCastException происходит непредвиденно - PullRequest
0 голосов
/ 30 января 2020

У меня возникла проблема с classCastException в моем коде, но я не могу ее найти. Я не знаю, где это может быть. Я пытался go код за кодом, строка за строкой, и я не нашел его. Кажется, все в порядке. Я попытался сравнить его с кодом, который работает, и он выглядит абсолютно одинаково (за исключением значений). Вот код:

Часть сообщения об ошибке:

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
        at android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.java:302)
        at com.example.helldumbellv3.Adapters.SharedPreferencesAssistant.getSharedPreferencesInt(SharedPreferencesAssistant.java:79)
        at com.example.helldumbellv3.Adapters.RecyclerViewSetter.getObject(RecyclerViewSetter.java:40)
        at com.example.helldumbellv3.FitnessActivity.onCreate(MainActivity.java:97)

Итак, теперь код в порядке сообщения об ошибке >>

MainActivity. java: 97: - Это внутри метода OnCreate

String recycleViewProgramSelector = RecyclerViewSetter.getObject(1, getApplicationContext());

RecyclerViewSetter. java: 40: - Это часть метода, поэтому я опубликую все это.

public static String getObject(int position, Context context){

        /**row n.40 >>*/ int programPositionI = SharedPreferencesAssistant.getSharedPreferencesInt(context,
                SharedPreferencesAssistant.SharedPreferencesKeys.RecyclerSTposition, 999);
        int programPositionII = SharedPreferencesAssistant.getSharedPreferencesInt(context,
                SharedPreferencesAssistant.SharedPreferencesKeys.RecyclerNDposition, 999);
        int programPositionIII = SharedPreferencesAssistant.getSharedPreferencesInt(context,
                SharedPreferencesAssistant.SharedPreferencesKeys.RecyclerRDposition, 999);

        if (position == programPositionI) {
            return  SharedPreferencesAssistant.getSharedPreferencesString(context,
                    SharedPreferencesAssistant.SharedPreferencesKeys.RecyclerViewST, "nothing");
        }
        else if (position == programPositionII) {
            return  SharedPreferencesAssistant.getSharedPreferencesString(context,
                    SharedPreferencesAssistant.SharedPreferencesKeys.RecyclerViewND, "nothing");
        }
        else if (position == programPositionIII) {
            return  SharedPreferencesAssistant.getSharedPreferencesString(context,
                    SharedPreferencesAssistant.SharedPreferencesKeys.RecyclerViewRD, "nothing");
        }
        return "Error - you have to set position to number 1,2 or 3";
    }

SharedPreffeferencesAssistant. java: 79: - Это также часть метода, поэтому вот весь метод

public static int getSharedPreferencesInt(Context context, String key, int _default){
        SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(context);
        /**row n.79 >>*/ return preferences.getInt(key, _default);
    }

Это ключи, использованные в приведенном выше коде:

public static class SharedPreferencesKeys{
        public static final String RecyclerViewST = "1";
        public static final String RecyclerSTposition = "non";
        public static final String RecyclerViewND = "2";
        public static final String RecyclerNDposition = "non";
        public static final String RecyclerViewRD = "3";
        public static final String RecyclerRDposition = "non";
        public static final String activatedProgram= "0";
}

Из того, что я думаю, проблема в RecyclerViewSetter. java, потому что последний созданный мною класс и класс SharedPreferencesAssistant прекрасно работали до того, как я создал этот метод

1 Ответ

0 голосов
/ 30 января 2020

попробуйте использовать: String.valueOf (integerValue)

...