我创建了一个设置活动。其中我有很多碎片。 其中一个有Logo设置(DialogPreferences),我需要从库中选择图像,并需要将该图像显示到DialogPreferences的ImageView中。
现在,我在Settings活动的onActivityResult中获取了Gallery图像。但是,我需要将图像数据导入配置(片段) - > LogoPreferences(DialogPreferences)。
所以,我的问题是,如何从onActivityResult(Activity)获取图像数据到LogoPreferences(即DialogPreference,它在Configuration片段内)。
提前致谢。
答案 0 :(得分:0)
您可以将从Bitmap
获得的onActivityResult()
图片转换为 ByteArray ,然后将数组转换回LogoPreferences
活动(或以较为明确的任何一项)您想要数据去的活动)。这是你可以做的事情:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Check to see the result is from the activity you are targeting
if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
Uri selectedImage = data.getData();
try {
Bitmap bitmapImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);
Log.i("Image Path", selectedImage.getPath());
// Convert bitmap to byte array
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmapImage.compress(Bitmap.CompressFormat.PNG, 0 /*ignored if PNG*/, bos);
byte[] bitmapdata = bos.toByteArray();
Bundle b = new Bundle();
b.putByteArray("byteArray", bitmapdata);
Intent intent = new Intent(this, LogoPreferences.class);
intent.putExtras(b);
startActivity(intent);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
然后要在LogoPreferences
活动中解码该字节数组,您可以这样做:
if(getIntent().hasExtra("byteArray")) {
Bitmap bitmap = BitmapFactory.decodeByteArray(
getIntent().getByteArrayExtra("byteArray"), 0, getIntent().getByteArrayExtra("byteArray").length);
// Optionally set the Bitmap to an ImageView
ImageView imv = new ImageView(this);
imv.setImageBitmap(bitmap);
}
希望它有所帮助!