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

从列表Fragment向新Activity传值时获取Null的问题排查

问题分析与解决办法

嘿,我一眼就瞅出问题所在啦!你遇到的Null值问题,核心原因是Intent传递的数据类型和你获取的类型不匹配,咱们一步步来解决:

1. 核心问题:类型不匹配

你在RecyclerView Adapter的点击事件里,传递的是int类型的patient_id:

int patient_id = mValues.get(position).getPatient_id();
i.putExtra("patient_id", patient_id); // 这里传的是int类型

但在PatientProfile的onCreate里,你用了getStringExtra()方法来获取:

String patient_id_str = intent.getStringExtra("patient_id");

getStringExtra()只能获取字符串类型的Extra数据,你传的是int,自然拿不到,返回Null。

2. 两种解决办法

办法一:转成字符串再传递

修改Adapter里的代码,把int转成String后再放入Intent:

Intent i = new Intent(context, PatientProfile.class);
i.putExtra("patient_id", String.valueOf(patient_id)); // 转成String
context.startActivity(i);

这样你原来目标Activity里的getStringExtra()代码就能正常拿到值了。

办法二:用对应类型的方法获取

保持Adapter的代码不变,修改目标Activity的获取逻辑,用getIntExtra()来拿int类型的数据:

Intent intent = getIntent();
// 第二个参数是默认值,如果没拿到数据就返回-1,你可以根据业务调整
int patient_id = intent.getIntExtra("patient_id", -1);
String patient_id_str = String.valueOf(patient_id);
Toast.makeText(getApplicationContext(), "Load Patient : " + patient_id_str, Toast.LENGTH_LONG).show();

记得可以加个判断,比如如果patient_id == -1,可以提示用户数据加载失败之类的。

额外小检查

另外确认下你的PatientProfile已经在AndroidManifest.xml里注册了,不过你能跳转到这个页面,应该是已经注册过的,这个大概率不是问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:07:25