如何为SharedPreferences Android

时间:2016-09-14 14:59:10

标签: android

我正在尝试使用

将颜色保存到SharedPreferences
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 at   android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.java:239)

2 个答案:

答案 0 :(得分:0)

错误几乎是自我解释,你正在为字符串赋值。您需要执行以下操作之一

  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变量。

答案 1 :(得分:0)

我知道为时已晚,但希望对您有所帮助。

科特琳代码:

  

在“首选项”参考中设置颜色

lateinit var mPreferences: SharedPreferences
lateinit var mEditor: SharedPreferences.Editor   
// initPreferences with Context   

mEditor.putInt(KEY_COLOR_PRIMARY, R.color.colorPrimary)
mEditor.commit()
  

获取并设置为背景

view.background =  mPreferences.getInt(KEY_COLOR_PRIMARY, 

R.color.colorPrimary))