나는 오늘 밤 안드로이드 에서이 문제를 겪었고 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());
}
}