扫码关注官方订阅号
学习是最好的投资!
原因很明朗,虽然我没有你的完整代码,但是我做了个小测试,得到了类似的crash:
10-26 21:00:03.474: E/AndroidRuntime(12410): java.lang.ClassCastException: me.li2.android.criminalintent.CrimePagerActivity cannot be cast to me.li2.android.criminalintent.CrimeFragment$Callbacks
原因是你传入的context,也就是SumFileActivity,并没有实现你定义的IOnClickListener. 所以无法强制转型。既然你在Fragment中实现了接口,那我们可以这样做,注册一个接口,替代传入context的办法:
SumFileActivity
IOnClickListener
// MyDialog.java public void setOnClickListener(IOnClickListener l) { this.iOnclicklistener = l; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.delete: if (this.iOnclicklistener != null) { this.iOnclicklistener.deleteOnClick(); }
然后还需要做的事件就是,在创建MyDialog的Fragment里面调用setOnClickListener.
setOnClickListener
PS: 你可以看下这个问题【什么是回调函数?一个类中的回调函数是什么作用】中我的答案,可能会对你理解 “如何处理点击事件的回调” 有所帮助。PS+: crash log,我觉得贴文本比图好,经过markdown排版后也会好看,同时也方便答题者引用其中的内容。代码也是,你可以加上注释,指明崩溃在哪行。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
原因很明朗,虽然我没有你的完整代码,但是我做了个小测试,得到了类似的crash:
原因是你传入的context,也就是
SumFileActivity,并没有实现你定义的IOnClickListener. 所以无法强制转型。既然你在Fragment中实现了接口,那我们可以这样做,注册一个接口,替代传入context的办法:
然后还需要做的事件就是,在创建MyDialog的Fragment里面调用
setOnClickListener.PS: 你可以看下这个问题【什么是回调函数?一个类中的回调函数是什么作用】中我的答案,可能会对你理解 “如何处理点击事件的回调” 有所帮助。
PS+: crash log,我觉得贴文本比图好,经过markdown排版后也会好看,同时也方便答题者引用其中的内容。代码也是,你可以加上注释,指明崩溃在哪行。