我有两个片段。我正在使用接口将一个片段与另一个片段进行通信:
public class FragmentLanguages extends ListFragment {
LanguageArrayAdapter adapter;
OnLanguageChangedListener mCallback;
public interface OnLanguageChangedListener {
public void onLanguageSelected(int position);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.languages, null);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Language languages[] = new Language[] {
new Language(R.drawable.ic_flag_german, "German"),
new Language(R.drawable.ic_flag_spanish, "Spanish"),
new Language(R.drawable.ic_flag_russian, "Russian"),
new Language(R.drawable.ic_flag_ukrainian, "Ukrainian") };
adapter = new LanguageArrayAdapter(getActivity(), R.layout.list_row,
languages);
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
adapter.setSelectedItem(position);
mCallback.onLanguageSelected(position + 1);
}
});
setListAdapter(adapter);
}
public static class Language {
public int image;
public String text;
public Language() {
super();
}
public Language(int image, String text) {
super();
this.image = image;
this.text = text;
}
}
public void setOnLanguageChangedListener(OnLanguageChangedListener mCallback) {
this.mCallback = mCallback;
}
}
和另一个
public class FragmentCircles extends Fragment implements OnClickListener,
OnLanguageChangedListener { ...
.....
@Override
public void onLanguageSelected(int position) {
currentLang = position;
translationCircle.removeAllViews();
String strSelect = "SELECT Translation FROM Translation WHERE Lang_Id="
+ currentLang + " ORDER BY Word_Id ASC";
translationList = DataBaseHelper.getInstance(getActivity())
.SelectTranslationList(strSelect);
Log.i("Lang ", "changed " + currentLang);
calculateCentreTranslation(lLabelRadius, width, height);
}
但是在屏幕旋转后,当我在 ListFragment 中选择某些项目时,它给了我一个错误
12-07 19:06:15.163: E/AndroidRuntime(436): java.lang.NullPointerException
在线
mCallback.onLanguageSelected(position + 1);
似乎 mCallback 为空。但是我该如何解决呢?