ImageView不在Java android中显示来自意图的图像

问题描述 投票:0回答:2

我尝试了几种不同的方法来在imageView中显示从图库中选择的图像。在MainActivity中,我让用户从Gallery中选择一个图像并在MainActivity中使用一个意图,将图像的uri发送到NextActivity并将uri设置为imageView,但是它不起作用。我看不到图片。在调试模式下,我在设置为ImageView的变量中看到uri,但它不显示图像。

我的代码

MainActivity.java onCreate方法

<!-- language: java -->

if (resultCode == RESULT_OK && requestCode == PICK_IMAGE){
            imageUri = data.getData();
            Intent intent = new Intent (this, NextActivity.class );
            if(imageUri != null){
                intent.putExtra("imageUri", imageUri.toString());
                startActivity(intent);
            }

        }

NextActivity.java onCreate方法

<!-- language: java -->

ImageView imgView = (ImageView) findViewById(R.id.imageView1);
Intent intent = getIntent();
String image_path = intent.getStringExtra("imageUri");
Uri fileUri = Uri.parse(image_path);
imgView.setImageURI(fileUri);

我试图按原样发送Uri,将其转换为String并重新转换,依此类推。我不知道。

NextActivity XML

<!-- language: xml -->

<ImageView
        android:id="@+id/imageView1"
        android:layout_width="396dp"
        android:layout_height="450dp"
        android:adjustViewBounds="true"
        android:contentDescription="@string/app_name"
        android:scaleType="fitXY"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.466"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

java android imageview uri
2个回答
0
投票

尝试一下:

Uri fileUri = Uri.parse(image_path);
imgView.setImageURI(null); 
imgView.setImageURI(fileUri);


0
投票

理想情况下,这只是一个活动(也许使用两个片段),而不是两个活动。

但是,如果您要坚持这种结构,则需要更改此:

        imageUri = data.getData();
        Intent intent = new Intent (this, NextActivity.class );
        if(imageUri != null){
            intent.putExtra("imageUri", imageUri.toString());
            startActivity(intent);
        }

至:

        imageUri = data.getData();

        if (imageUri != null){
            Intent intent = new Intent (this, NextActivity.class);
            intent.setData(imageUri);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            startActivity(intent);
        }

和更改:

String image_path = intent.getStringExtra("imageUri");
Uri fileUri = Uri.parse(image_path);

至:

Uri fileUri = intent.getData();

没有,NextActivity will not have rights to use the content identified by the Uri

也请用图像加载库(例如Glide或Picasso)替换NextActivity。>>

© www.soinside.com 2019 - 2024. All rights reserved.