У меня есть класс, который расширяет 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
Я попробовал несколько других Context
объектов вместо this
, но у меня всегда есть некоторые вариации ClassCastException
. Что мне нужно сделать, чтобы исправить это? Благодарю.
Большое спасибо за это. Это очень полезно. Я застреваю, пытаясь реализовать это. Если вы не возражаете, можете ли вы посмотреть на редактирование моего ОП? Еще раз спасибо! (великая книга, кстати). – Alex
@Alex: Ваше сообщение об ошибке не соответствует коду. Он относится к 'OnSportSelectionClickedListener' (который вы не показываете) и' OnClickListener' (предположительно 'View.OnClickListener', который вы, кажется, не используете здесь). Вы уверены, что этот краш из кода в вашем редактировании? Кроме того, спасибо за добрые слова! – CommonsWare
Извините, это должно было сказаться 'OnSelectionClickedListener'. Да, это из кода, который я опубликовал (хотя есть совсем немного, но ничего, что должно иметь значение здесь). Думаю, мне нужно подумать об этом чуть больше. Еще раз спасибо. – Alex