Я столкнулся с этой проблемой сегодня вечером с android, и, посмотрев на решения javadoc, я придумал это реально работающее решение только для таких людей, как я, которым нужно чуть больше объяснения javadoc.
Вот рабочий пример с реальным интерфейсом, использующим Android Java.
Он проверяет активность, вызвавшую реализацию интерфейса AboutDialogListener
перед попыткой приведения поля AboutDialogListener.
public class About extends DialogFragment implements OnClickListener,
OnCheckedChangeListener {
public static final String FIRST_RUN_ABOUT = "com.gosylvester.bestrides.firstrunabout";
public interface AboutDialogListener {
void onFinishEditDialog(Boolean _Checked);
}
private AboutDialogListener adl;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Activity a = this.getActivity();
if (AboutDialogListener.class.isInstance(a)) {
adl = (AboutDialogListener) a;
}
}
...
Позже я проверяю, является ли поле adl! Null перед вызовом интерфейса
@Override
public void onStop() {
super.onStop();
sharedPref.edit().putBoolean(About.FIRST_RUN_ABOUT, _Checked).commit();
// if there is an interface call it.
if (adl != null) {
adl.onFinishEditDialog(is_Checked());
}
}