Я пытаюсь написать sqlite db в ListFragment, проблема заключается в получении контекста из этого фрагмента.Android - доступ к контексту с getActivity в ListFragment возвращает null
Странно, что вызов getActivity() возвращает контекст в методе onActivityCreated, но не в другом месте (даже после этого вызова). Я даже попытался сохранить контекст в переменной класса mContext, но в следующий раз, когда я получу эту переменную, она вернется в нуль!
Любые идеи о том, что здесь происходит? Что-то странное происходит в жизненном цикле Fragment?
общественного класса DayFragment расширяет ListFragment {
private String day;
private Context mContext;
public DayFragment() {
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] values = new String[] { day, "Android", "iPhone", "WindowsMobile" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
mContext = this.getActivity();
}
public void createEntry() {
EntriesDataSource datasource = new EntriesDataSource(mContext);
datasource.open();
Entry entry = new Entry();
entry.setDay(day);
entry.setTitle("ok");
entry.setTime("09:00");
}
}
Не знаю ответа, но хотелось бы упомянуть, что лучше использовать getActivity(). GetBaseContext(), поскольку экземпляр активности, к которому прикреплен ваш фрагмент, может меняться в течение всего жизненного цикла фрагмента. Я знаю, если вы вызываете getActivity() на определенных этапах жизни фрагмента, он может вернуть null. Например, когда ваша деятельность выходит из поля зрения (activity.onPause()), фрагмент.getActivity() может возвращать значение null. – Tenfour04
Спасибо за ввод, фрагмент на экране, когда я вызываю getActivity(). – gregor