android基础学习--->Android SharedPreferences存储对象和图片(Android SDK2.2)2

 

 上一篇文章是写2.2之前的SharedPreferences存储对象和图片的使用方法。

本篇文章简单说下2.2之后的使用方法。

由于android SDK2.2提供Base64编码和解码库,所以我们不需要引包。

http://developer.android.com/reference/android/util/Base64.html可以参考官方资料

特别提醒:存储的类不能为activity的内部类,测试过了

 

以下是在OnStop函数中存储Product对象的代码

 

protected void onStop() {
  try {

   Product product = new Product();
   product.id = etProductID.getText().toString();
   product.name = etProductName.getText().toString();
   product.price = Float.parseFloat(etProductPrice.getText()
     .toString());
   ByteArrayOutputStream baos = new ByteArrayOutputStream();

   ObjectOutputStream oos = new ObjectOutputStream(baos);
   oos.writeObject(product);
   mySharedPreferences = getSharedPreferences("base64",
     Activity.MODE_PRIVATE);
   String productBase64 = new String(
     Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT));

   SharedPreferences.Editor editor = mySharedPreferences.edit();
   editor.putString("product", productBase64);


   editor.commit();
   oos.close();


  } catch (Exception e) {
   setTitle("error:" + e.getMessage());
  }
  super.onStop();
 }

 

下面是读取product对象并写数据的代码段

public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  etProductID = (EditText) findViewById(R.id.etProductID);
  etProductName = (EditText) findViewById(R.id.etProductName);
  etProductPrice = (EditText) findViewById(R.id.etProductPrice);

  byte[] base64Bytes;
  ByteArrayInputStream bais;
  try
  {

   mySharedPreferences = getSharedPreferences("base64",
     Activity.MODE_PRIVATE);

   String productBase64 = mySharedPreferences.getString("product", "");

   base64Bytes = Base64.decode(productBase64, Base64.DEFAULT);

   bais = new ByteArrayInputStream(base64Bytes); 
   ObjectInputStream ois = new ObjectInputStream(bais);

   Product product = (Product) ois.readObject();   
   etProductID.setText(product.id);
   etProductName.setText(product.name);
   etProductPrice.setText(String.valueOf(product.price));

   ois.close();

  }
  catch (Exception e)
  {
   e.printStackTrace();
  }

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值