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

菜鸟谈android开发时遇到的有趣问题(1)_第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, ...)

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

你可能感兴趣的:(菜鸟谈android开发时遇到的有趣问题(1))