SharedPreferences 只能存入基本数据类型或者字符串。值对象或图片以流的形式转化为字符串,才能存入SharedPreferences中。下面就演示一下存入的过程:
//构建值对象。
Product product = new Product();
product.setId(etProductID.getText().toString());
product.setName(etProductName.getText().toString());
product.setPrice(Float.parseFloat(etProductPrice.getText()
.toString()));
//把值对象以流的形式转化为字符串。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(product);
String productBase64 = new String(Base64.encodeBase64(baos
.toByteArray()));
//把转化后的字符串存入SharedPreferences中。
mySharedPreferences = getSharedPreferences("base64",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = mySharedPreferences.edit();
editor.putString("product", productBase64);
//把图片以流的形式转化为字符串。
baos = new ByteArrayOutputStream();
((BitmapDrawable) imageView.getDrawable()).getBitmap()
.compress(CompressFormat.JPEG, 50, baos);
String imageBase64 = new String(Base64.encodeBase64(baos
.toByteArray()));
//把图片存入SharedPreferences中。
editor.putString("productImage", imageBase64);
//提交事物。
editor.commit();
//关闭流。
oos.close();
//构建值对象。
Product product = new Product();
product.setId(etProductID.getText().toString());
product.setName(etProductName.getText().toString());
product.setPrice(Float.parseFloat(etProductPrice.getText()
.toString()));
//把值对象以流的形式转化为字符串。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(product);
String productBase64 = new String(Base64.encodeBase64(baos
.toByteArray()));
//把转化后的字符串存入SharedPreferences中。
mySharedPreferences = getSharedPreferences("base64",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = mySharedPreferences.edit();
editor.putString("product", productBase64);
//把图片以流的形式转化为字符串。
baos = new ByteArrayOutputStream();
((BitmapDrawable) imageView.getDrawable()).getBitmap()
.compress(CompressFormat.JPEG, 50, baos);
String imageBase64 = new String(Base64.encodeBase64(baos
.toByteArray()));
//把图片存入SharedPreferences中。
editor.putString("productImage", imageBase64);
//提交事物。
editor.commit();
//关闭流。
oos.close();