菜鸟谈android开发时遇到的有趣问题(1)

https://github.com/Yalantis/Context-Menu.Android

今天使用githubYalantisContext-menu的库时,想到自己要在多个fragment里使用,于是就封装了一下,用一个类来实现其中的OnMenuItemClickListener(处理每个item点击事件的回调),但是却发现Log日志中抛出了ClassCast的异常:

MainActivity should implements OnMenuItemClickListener

当时整个人都不好了,因为从没遇到这种问题,原来一直以为什么类都可以去实现,难道在android中还有特殊的类必须要由activity来实现?是因为我对java的继承实现机制理解不够?

后来当我查看源代码时才发现,这个异常是作者写的,这个OnMenuItemClickListener会在一个ContextMenuDialogFragment里与活动绑定是调用

public void onAttach(Activity activity) {

    super.onAttach(activity);

    try {

        mItemClickListener = (OnMenuItemClickListener) activity;

    } catch (ClassCastException e) {

        Log.e(TAG, activity.getClass().getSimpleName() +

        should implement " + OnMenuItemClickListener.class.getSimpleName());

}

我靠!>==< 还可以这样!!!

不过我get了新知识,原来也有一次我一个类继承了另外两个类,而我在某个地方需要同时用到这

两个类的实例,当时的做法是在传参是 : method(this, this, ...)

现在看来只需要这样调用就好了,传一个参再来强制转型。(虽然这样做并不知道除了好看有什么用,求解)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,280评论 25 709
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,774评论 0 16
  • 我发现了一个事情:下午睡觉长时间了之后,那种醒了又醒不了的状态下梦是可以继续的。一不小心又睡了很长时间…完…又要头...
    千面少年阅读 2,425评论 3 2

友情链接更多精彩内容