这是使用的链接...... http://javatechig.com/android/writing-image-picker-using-intent-in-android问题是图片没有保存。当我选择图片时它会进入ImageView。但是当我从这个活动以及app中出来时,它没有保存......请帮助我。
任何帮助都将不胜感激。
pickImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, SELECT_PHOTO);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case SELECT_PHOTO:
if(resultCode == RESULT_OK){
try {
final Uri imageUri = imageReturnedIntent.getData();
final InputStream imageStream = getContentResolver().openInputStream(imageUri);
final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
imageView.setImageBitmap(selectedImage);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
答案 0 :(得分:0)
你可以这样做:
制作全局变量
SharedPreferences sp;
获取imageview参考后的onCreate()
sp=getSharedPreferences("profilePicture",MODE_PRIVATE);
if(!sp.getString("dp","").equals("")){
byte[] decodedString = Base64.decode(sp.getString("dp", ""), Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
imageView.setImageBitmap(decodedByte);
}
在onActivityResult方法中,在imageView中设置图像后,写下以下代码:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
selectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
sp.edit().putString("dp", encodedImage).commit();
此代码应该有效。请试试。如果它不起作用,我可以给你完整的活动代码。
答案 1 :(得分:0)
你在做什么,你从图库中选择图像,使用它的位图将图像设置为imageview。当你退出活动时,附加到该活动的所有视图组件也会被破坏。 这里你必须要理解的一件事是,你没有保存位图或图像路径以便以后出现,通过查看你的逻辑,它清楚地表明保存和加载保存的图像都丢失了。
解决方案是,
从图库中选择图像后,将图像路径保存在共享首选项中。尝试从保存的路径加载图像,在将其位图加载到Imageview之前,请确保图像路径有效(在某种意义上,图像存在)。
我希望你能实现这一目标。