我有一个扩展了LinearLayout的类。该类具有一个接口,该接口由实例化它来侦听点击事件的片段实现。我的问题是,在LinearLayout类中,我无法弄清楚如何实例化回调对象。实例化接口对象时的ClassCastException
public class SelectionView extends LinearLayout {
OnSelectionClickedListener mCallback;
LinearLayout mSelection;
public interface OnSelectionClickedListener {
void onSelected(SelectionView view);
}
public SelectionView (Context context) {
super(context);
}
public void init() {
LayoutInflater inflater = LayoutInflater.from(getContext());
final LinearLayout viewGroup = (LinearLayout) inflater.inflate(R.layout.selection, this);
mSelection = (LinearLayout) viewGroup.findViewById(R.id.selection_container);
mCallback = (SelectionClickedListener) this;
// ...
}
我得到的错误是在最后一行:
造成的:java.lang.ClassCastException: com.mysite.myapp.SelectionView不能转换到 com.mysite。 myapp.SelectionView $ OnSelectionClickedListener
我试过的,而不是this
其他几个Context
对象,但我总是对一些变化0错误。为了纠正这个问题,我需要做些什么?谢谢。
非常感谢。这非常有帮助。我卡住试图实现这一点。如果你不介意,你可以看看我的OP的编辑吗?再次感谢! (伟大的书,顺便说一句)。 – Alex
@Alex:您的错误消息与代码不匹配。它指的是'OnSportSelectionClickedListener'(你不会显示)和'OnClickListener'(大概是'View.OnClickListener',你在这里似乎没有用到)。你确定这次崩溃是来自编辑中的代码吗?另外,感谢您的亲切的话! – CommonsWare
对不起,应该说'OnSelectionClickedListener'。是的,它来自我发布的代码(虽然有很多遗漏,但这里没有关系)。我想我需要多思考一下。再次感谢。 – Alex