我正在尝试将字节数组数据保存在arraylist中,其工作正常,
SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(FirstActivity.this);
SharedPreferences.Editor sEdit=sPrefs.edit();
for(int i=0;i<byteArrayList.size();i++)
{
sEdit.putString("val"+i,byteArrayList.get(i).toString());
}
sEdit.putInt("size",byteArrayList.size());
sEdit.commit();
我正在使用
检索字节数组数据 SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(ViewImagesActivity.this);
myAList=new ArrayList<byte[]>();
int size=sPrefs.getInt("size",0);
for(int j=0;j<size;j++)
{
myAList.add(sPrefs.getString("val"+j,"")); // giving error for type mismatch for byte[] and string
}
答案 0 :(得分:1)
尝试以下代码: -
myAList.add(sPrefs.getString("val"+j,null).getBytes(Charset.forName("UTF-8")));
显示错误,因为字节数组的数组列表类型
myAList=new ArrayList<byte[]>();
并添加字符串的值,以便给出错误。
答案 1 :(得分:0)
您正试图将String
存储在Byte
类型列表中:
myAList.add(sPrefs.getString("val"+j,));
您可以使用int
代替Byte
。有一种标准方法putInt
和getInt
用于在SharedPreferences
答案 2 :(得分:0)
您必须使用add
参数调用byte[]
方法。使用String.getBytes
方法执行反向操作,因此请更改代码的相关行:
myAList.add(sPrefs.getString("val"+j,"").getBytes());