单击后不显示新图像

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();
        
    

【讨论】:

以上是关于单击后不显示新图像的主要内容,如果未能解决你的问题,请参考以下文章

引导选项卡单击后不显示内容

为啥单击编辑文本后不显示qml虚拟键盘,而我在.pro和main.cpp中调用插件

PYQT5 qlineedit 隐藏后不显示

提交后不显示选中的行

V-在控制台上提取后不显示记录[重复]

Flutter:调用 setState() 方法后不显示 SnackBar