我正在制作一个android应用程序,其中我必须通过单击按钮从图库中选择图像,然后在具有两个文本字段的另一个活动中显示它,问题是我能够打开图库并从中选择图像,但我没有能够在其他活动中显示图像...
这是我的代码...PictureOptions.java
public void buttonGalleryOpen(View view)
{
Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, RESULT_LOAD_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap selectedphoto = null;
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String [] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
selectedphoto = BitmapFactory.decodeFile(filePath);
cursor.close();
Intent intent = new Intent(PictureOptions.this,ShowImage.class);
intent.putExtra("data", selectedphoto);
startActivity(intent);
}
PictureOptions.xml
<Button
android:id="@+id/buttonGalleryOpen"
android:layout_width="fill_parent"
android:layout_height="66dp"
android:layout_weight="0.34"
android:onClick="buttonGalleryOpen"
android:text="@string/button_gallery_open" />
ShowImage.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_image);
ImageView imageview = (ImageView)findViewById(R.id.ImageShow);
Bitmap selectedphoto =(Bitmap)this.getIntent().getParcelableExtra("data");
imageview.setImageBitmap(selectedphoto);
}
ShowImage.xml
<ImageView
android:id="@+id/ImageShow"
android:layout_width="200dp"
android:layout_height="200dp" />
一切正常,并且第二个活动(ShowImage)也正在打开,除了没有iamge在显示....不知道为什么..?HELP
最佳答案
您的代码中的这一行没有意义:
intent.putExtra("data", "selectedphoto");
您将在此处添加字符串“ selectedphoto”,该字符串绝不会连接到您先前初始化的selectedphoto变量。您可以将位图作为字节数组额外使用,但这效率低下,尤其是在图像较大时。
而不是将位图传递给ShowImage活动,而是传递URI,然后完全像现在在PictureOptions活动中那样在ShowImage活动中检索实际位图。
intent.setData( uri );
在您的ShowImage活动中,请执行以下操作:
URI imageUri = getIntent().getData();