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

Android通过接口传递RecyclerView位置触发崩溃如何解决

问题根因
  • 错误实例化Activity调用接口:你在Adapter的Camera点击事件中手动通过new Appointment()创建的是全新的Activity实例,并非当前系统托管、正在前台运行的Appointment实例。这个新创建的Activity实例没有完成生命周期初始化,内部Context为空,调用Toast时无法获取资源就会触发空指针异常。
  • Toast参数类型错误:Toast.makeText方法的第二个参数如果传入int类型,系统会默认将其识别为字符串资源ID去匹配资源,你传入的是position数值,不存在对应的资源ID也会触发崩溃。
修复步骤
  1. 替换Adapter中Camera点击事件的回调逻辑,直接使用构造方法传入的接口实例调用,不需要新建Activity对象:
// 原错误代码
// Appointment obj = new Appointment();
// obj.On_Button_Cancel_Clicked(holder.getLayoutPosition());

// 替换为以下代码
onButtonClicked.On_Button_Cancel_Clicked(holder.getLayoutPosition());
  1. 修改主Activity中Toast的调用代码,将int类型的position转为字符串后再传入:
@Override
public void On_Button_Cancel_Clicked(int position) {
    Toast.makeText(Appointment.this, String.valueOf(position), Toast.LENGTH_SHORT).show();
}
  1. 可选优化:建议接口方法名遵循Android开发小驼峰命名规范,可改为onButtonCancelClicked提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:27:03