Зачем нужно приведение типов в функции обратного вызова android?
В примерах кода на developer.android.com есть конструкция передачи данных от фрагмента к активности. Там используется интерфейс обратного вызова. Разбираю код построчно и интересует вопрос: зачем приводить активность к типу onArticleSelectedListener (mListener = (OnArticleSelectedListener) activity;)?
Код фрагмента:
public static class FragmentA extends ListFragment {
...
// Container Activity must implement this interface
public interface OnArticleSelectedListener {
public void onArticleSelected(Uri articleUri);
}
OnArticleSelectedListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnArticleSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Append the clicked item's row ID with the content provider Uri
Uri noteUri = ContentUris.withAppendedId(ArticleColumns.CONTENT_URI, id);
// Send the event and Uri to the host activity
mListener.onArticleSelected(noteUri);
}
}
В активности происходит переопределение метода интерфейса onArticleSelected.