单击后不显示新图像
Posted
技术标签:
【中文标题】单击后不显示新图像【英文标题】:new images does not show up after clicking 【发布时间】:2021-11-28 20:08:36 【问题描述】:我有我的 ProfileActivity:
public class ProfileActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
Button gallery = findViewById(R.id.gallery);
gallery.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent intent = new Intent(ProfileActivity.this,GalleryActivity.class);
startActivityForResult(intent, 3);
);
protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 3 && resultCode == RESULT_OK && data != null)
Uri selectedImage = data.getData();
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageURI(selectedImage);
我的画廊活动:
public class GalleryActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivity(intent);
我的 xml 文件:
<ImageView
android:id="@+id/imageView"
android:layout_
android:layout_
android:layout_centerInParent="true" />
<Button
android:id="@+id/gallery"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10sp"
android:text="Load image from Gallery"
android:textAllCaps="false"
android:textSize="21sp" />
我面临的问题是,当用户单击新图像时,它不会显示在 OnActivityResult() 中。 是什么原因以及如何解决?
【问题讨论】:
GalleryActivity
没有意义,可以删除。您创建的 Intent
实际上应该是您在 ProfileActivity
中与 startActivityForResult()
一起使用的内容。
我需要在单独的活动中编写它,有什么方法可以实现吗?
您必须准确解释GalleryActivity
应该做什么,因为它现在所做的只是从ProfileActivity
中断startActivityForResult()
。
GalleryAactivity 是一个图片库,用户可以从中选择新的个人资料图片
不,它只是一个空的Activity
开始图像选择Intent
。它目前没有做任何在ProfileActivity
中做不到的事情。
【参考方案1】:
在我的Android Studio中阅读并实现代码后,我也很困惑,为什么要启动一个新的Activity(GalleryActivity)来启动图像选择。 Intent Intent.ACTION_PICK
将显示一个选择 UI。
显然,使用您的代码无法实现您的目标。
在我看来,只需从GalleryActivity
类启动拾取图像 UI
像这样:
gallery.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Log.d("TestShowGallery", "TANCOLO===> onClick() ");
// Intent intent = new Intent(TestShowGallery.this,GalleryActivity.class);
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(intent, 3);
);
我测试了我的代码,它可以工作。
如果你真的想做你想做的事,有一种方法可以实现你的目标,但我不建议你这样做。为了回顾如何在 2 个活动之间传输数据,我向您展示了一个示例。
你只需要更改GalleryActivity
类中的代码
public class GalleryActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
Log.d("GalleryActivity", "TANCOLO===> onCreate() ");
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(intent, 400);
protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
Log.d("GalleryActivity", "TANCOLO===> requestCode = " + requestCode + ", resultCode = " + resultCode);
Log.d("GalleryActivity", "TANCOLO===> data = " + data );
if (requestCode == 400 && resultCode == RESULT_OK)
setResult(RESULT_OK, data);
finish();
【讨论】:
以上是关于单击后不显示新图像的主要内容,如果未能解决你的问题,请参考以下文章