2016-09-14 2 views
1

Я пытаюсь сохранить цвет SharedPreferences используяКак сохранить цвет на SharedPreferences Android

public static void saveChannelImageColor(int color) { 
    saveInt(CHANNEL_ID1, color); 
} 

public static int getChannelImageColor() { 
    return getInt(CHANNEL_ID1, 0xff0000ff); 
} 

Но когда я пытаюсь получить цвет он дает ошибку

java.lang.ClassCastException : java.lang.String не может быть приведен к java.lang.Integer на android.app.SharedPreferencesImpl.getInt (SharedPreferencesImpl.java:239)

+0

Вы уверены, что ваше значение цвета сохраняется как значение int в ваших предпочтениях? потому что ваше значение по умолчанию ** 0xff0000ff ** не является целым числом. –

+0

Можете ли вы опубликовать соответствующий код с сохранением и чтением из SharedPreferences? – adalPaRi

+0

Не сохраняйте цвет как int, а как строку, а затем извлекайте его как строку и выполняйте необходимую обработку. – sumandas

ответ

0

Ошибка в значительной степени объясняет, что вы присваиваете значение int строке. Вам нужно сделать одно из следующих действий

  1. Сохранить цвет в качестве строки

    public static void saveChannelImageColor(int color) { 
        saveInt(CHANNEL_ID1, String.valueOf(color)); 
    } 
    
    public static int getChannelImageColor() { 
        return getString(CHANNEL_ID1, "0xff0000ff"); 
    } 
    
  2. Где бы вы используете getChannelImageColor он возвращается к Int так что вы сохранить/использовать/присвоить его переменной Int.

0

Вы можете хранить цветные ссылки. Целые. Так что просто используйте свой код, как saveChannelImageColor(R.color.black)

Смежные вопросы