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
相关产品推荐
相关产品推荐

