使用SharedPreferences将图像另存为字符串

时间:2015-07-19 15:01:17

标签: android base64 sharedpreferences

我正在编写一个应用程序,我必须保存Activity的状态。 屏幕上显示ImageViewButton。当我点击ButtonImageView更改背景图片。我的问题是,当我停止Activity并再次启动时,ImageView会显示第一张图片。我将图片转换为String,其中 Base64 。然后我用SharedPreferences保存了字符串。之后,我得到它并再次使用 Base64 进行解码。我没有任何错误消息,但它不起作用。我复制我的代码,如果有人知道怎么做,请回复!

public static final String IMAGE = "Image";
public static final String DB_INIT = "DB_INIT";

Button button;
ImageView imageview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SharedPreferences sp = getApplicationContext().getSharedPreferences(
            DB_INIT, MODE_PRIVATE);
    String backimage = sp.getString(IMAGE, "res/drawable/my_image.png");

    button = (Button) findViewById(R.id.button1);
    imageview = (ImageView) findViewById(R.id.imageview);

    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            imageview.setBackgroundResource(R.drawable.szaz);
        }
    });
}
@Override
protected void onStop() {
    SharedPreferences sp = getApplicationContext().getSharedPreferences(
            DB_INIT, MODE_PRIVATE);
    SharedPreferences.Editor et = sp.edit();
    et.putString(IMAGE,"res/drawable/my_image.png");
    et.commit();
    super.onStop();
  }
}

2 个答案:

答案 0 :(得分:2)

尝试实施上述代码并希望它适合您。

Bitmap realImage = BitmapFactory.decodeStream(stream);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);   
    byte[] b = baos.toByteArray(); 

    String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
    textEncode.setText(encodedImage);

    SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
    Editor edit=shre.edit();
    edit.putString("image_data",encodedImage);
    edit.commit();

任何帮助,请告诉我。

答案 1 :(得分:0)

您需要在base64中传递图片网址,而不是将其存储到字符串中,之后您就可以看到它。