You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中点击ImageView实现图片全屏展示的问题求解

问题原因分析
  • fullimage控件属于FullscreenimageActivity的布局,你在MainActivity中调用findViewById根本找不到对应控件,变量为空,后续操作会触发空指针异常
  • context变量未初始化,直接传入Picasso会导致崩溃
  • uri变量没有赋值,Picasso加载空路径无法渲染图片
  • 跳转新Activity后再操作MainActivity里的控件没有任何意义,新Activity的控件无法被原页面直接控制
修复步骤

1. 修改MainActivity代码,将图片信息通过Intent传递给新页面

public class MainActivity extends AppCompatActivity {
    private ImageView imageView;
    // 这里如果你的图片是固定drawable资源,可以直接定义资源id
    private static final int IMG_RES = R.drawable.img;

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

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, FullscreenimageActivity.class);
                // 传递图片资源id,如果是网络/本地文件uri就用putExtra("image_uri", uri.toString())
                intent.putExtra("image_res", IMG_RES);
                startActivity(intent);
            }
        });
    }
}

2. 新增FullscreenimageActivity的布局文件activity_fullscreen_image.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/fullscreen_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"/>
</LinearLayout>

3. 编写FullscreenimageActivity逻辑,接收参数并加载图片

public class FullscreenimageActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fullscreen_image);
        ImageView fullImage = findViewById(R.id.fullscreen_image);
        
        // 接收传过来的资源id
        int imgRes = getIntent().getIntExtra("image_res", -1);
        if (imgRes != -1) {
            // 直接用当前Activity作为context传入Picasso
            Picasso.with(this).load(imgRes).into(fullImage);
        }
        // 如果是传递的uri就用下面的代码替换:
        // String uriStr = getIntent().getStringExtra("image_uri");
        // if (uriStr != null) {
        //     Picasso.with(this).load(Uri.parse(uriStr)).into(fullImage);
        // }
    }
}

注意:需要提前在AndroidManifest.xml中注册FullscreenimageActivity,否则跳转时会抛出Activity未找到的异常。

内容的提问来源于stack exchange,提问作者Anushka Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:00:04