我正在编写一个应用程序,我必须保存Activity
的状态。
屏幕上显示ImageView
和Button
。当我点击Button
时ImageView
更改背景图片。我的问题是,当我停止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();
}
}
答案 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中传递图片网址,而不是将其存储到字符串中,之后您就可以看到它。