繁体   English   中英

Select 来自图库的照片并在另一个活动中显示

[英]Select a photo from the gallery and show it in another Activity

我正在制作一个移动应用程序,我必须通过单击按钮从图库中获取 select 图像,然后将其显示在另一个活动中。 问题是图像不会显示给第二个活动。 运行代码没有问题。 会有什么问题..请帮助我

MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}

public void buttonGalleryOpen(View view)
{
Intent intent = new         Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    //noinspection deprecation
    startActivityForResult(intent, RESULT_OK);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
Bitmap selectedphoto = null;


super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && data != null){

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(MainActivity.this,gallery_view.class);
intent.putExtra("data", selectedphoto);
startActivity(intent);
}
}
}

我正在制作一个移动应用程序,我必须通过单击按钮从图库中获取 select 图像,然后将其显示在另一个活动中。 问题是图像不会显示给第二个活动。 运行代码没有问题。 会有什么问题..请帮助我

This is an activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="camera sample"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_below="@+id/textview1"
android:layout_marginTop="3dp">

<Button
android:id="@+id/bottonGalleryOpen"
android:onClick="buttonGalleryOpen"

android:layout_width="100dp"
android:layout_height="50dp"
android:layout_marginTop="30dp"
android:gravity="center"
android:text="pick" />

</RelativeLayout>


</RelativeLayout>

Gallery_view.java

public class gallery_view extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery_view);
ImageView imageview = (ImageView)findViewById(R.id.ImageShow);
Bitmap selectedImage  =(Bitmap)this.getIntent().getParcelableExtra("data");
imageview.setImageBitmap(selectedImage);

}
}

Gallery_view.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<RelativeLayout
android:id="@+id/relative_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="camera sample"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</RelativeLayout>

<RelativeLayout
android:layout_below="@id/relative_1"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<ImageView
android:id="@+id/ImageShow"
android:layout_width="match_parent"
android:layout_height="500dp" />
    
</RelativeLayout>

</RelativeLayout>

您的代码中的这一行没有意义:

intent.putExtra("data", "selectedphoto");

您在此处添加字符串“selectedphoto”,它与您之前初始化的 selectedphoto 变量没有任何关系。 您可以将您的 bitmap 设置为额外的字节数组,但这效率低下,尤其是当图像很大时。 不要将 bitmap 传递给 ShowImage 活动,而是传递您的 URI,然后在 ShowImage 活动中检索实际的 bitmap,就像您现在在 PictureOptions 活动中所做的那样。

intent.setData(passed uri here);

在您的 ShowImage 活动中执行以下操作:

URI imageUri = getIntent().getData();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM