我正在制作一个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();

07-27 15:44