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

通过Intent传递图片资源时触发NumberFormatException错误求助

解决java.lang.NumberFormatException: Invalid int: "null"的问题

这个错误的根源其实很好找:你在第一个Activity里传递的是int类型的图片资源ID(R.drawable.img_baseball本质是个int常量),但在第二个Activity里却用getStringExtra()去获取——这个方法是专门读取字符串类型Extra的,所以自然拿不到对应的值,得到的是null,再用Integer.parseInt(null)就直接抛出了NumberFormatException。

修正步骤:

不需要把资源ID转成字符串传递,保持int类型传递即可,接收时改用对应的getIntExtra()方法来获取。

修正后的第二个Activity代码:

private ImageView imageView;
private TextView nameView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);
    imageView = findViewById(R.id.tv_image);
    nameView = findViewById(R.id.tv_name);
    Intent intent = getIntent();
    
    // 处理标题:加个非空判断,避免显示null
    String sportTitle = intent.getStringExtra("Name");
    nameView.setText(sportTitle != null ? sportTitle : "");
    
    // 直接用getIntExtra获取图片资源ID,第二个参数是默认值(可以设一张占位图的ID)
    int imageResId = intent.getIntExtra("Image", R.drawable.default_placeholder);
    // Glide支持直接加载int类型的资源ID,不需要额外转换
    Glide.with(this).load(imageResId).into(imageView);
}

额外小优化建议:

  1. 用this代替getApplicationContext()作为Glide的上下文,Activity上下文更贴合页面生命周期,能避免一些潜在的内存泄漏问题。
  2. 给getIntExtra()设置一个合理的默认资源ID(比如一张占位图),就算Intent里没传递这个值,也不会导致加载出错。
  3. 对标题字符串做非空判断,防止空值导致TextView显示异常。

内容的提问来源于stack exchange,提问作者Shoaib Kakal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:27:31