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

RecyclerView点击跳转页面报错:Context.getPackageName()空对象引用

解决RecyclerView点击时Context.getPackageName()空指针异常

这个空指针问题很常见,核心原因就是你用来启动Activity的context对象变成null了。虽然你在contactHolder构造方法里传入了Activity,但如果Activity已经进入销毁状态,或者ViewHolder初始化时传的context本身就有问题,就会触发这个报错。

给你两个关键修复点,既能解决当前问题,还能避免潜在的内存泄漏:

1. 改用View关联的Context,不要直接持有Activity引用

直接持有Activity的强引用很容易导致内存泄漏,而且一旦Activity销毁,这个context就失效了。我们可以用点击事件里的View来获取它关联的有效Context:

修改你的ViewHolder构造方法和点击事件:

public contactHolder(View itemView) {
    super(itemView);
    Fname = itemView.findViewById(R.id.getFname);
    Lname = itemView.findViewById(R.id.getLname);
    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startAnew(v, contactID);
        }
    });
}

2. 完善startAnew方法,增加空判断

在启动Activity前先检查Context是否有效,避免意外报错:

private void startAnew(View view, String currentcontactID) {
    Context context = view.getContext();
    if (context != null) {
        Intent intent = new Intent(context, personActivity.class);
        intent.putExtra(CONTACT_ID, currentcontactID);
        context.startActivity(intent);
    }
}

这样修改后,你既解决了Context空指针的问题,又避免了因为持有Activity引用带来的内存泄漏风险。另外别忘了确认contactID在点击时已经被正确赋值,不然可能会出现新的问题哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:51