如何将颜色保存到SharedPreferences Android

3

我正在尝试使用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,位于 android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.java:239)


你确定吗,你的颜色值在偏好设置中保存为整数值吗?因为你的默认值 0xff0000ff 不是整数。 - Rahul Sharma
你能否发布相关代码,包括从SharedPreferences中保存和读取数据的部分? - adalpari
不要将颜色保存为整数,而应该保存为字符串,然后作为字符串检索并进行必要的处理。 - sumandas
2个回答

1
我知道现在可能有点晚了,但希望能对某些人有所帮助。
Kotlin 代码:

在偏好设置中设置颜色引用

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))


1
错误信息很明显,你正在将一个int值赋给字符串。你需要执行以下操作之一。
  1. Save color as String

    public static void saveChannelImageColor(int color) {
        saveInt(CHANNEL_ID1, String.valueOf(color));
    }
    
    public static int getChannelImageColor() {
        return getString(CHANNEL_ID1, "0xff0000ff");
    }
    
  2. Whereever you are using getChannelImageColor it is returning an int so you save/use/assign it to an int variable.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接