Ответ 1
Я решил это, переместив адаптер и getListview в onActivityCreated (...).
onCreateView просто раздувает и возвращает макет.
Это заполнение списка в фрагменте из базы данных:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LinearLayout Layout5 = (LinearLayout) inflater.inflate(R.layout.tab_frag5_layout, container, false);
Cursor allBands;
MyDatabase db;
Context ctx = (Context)TabFragment5.this.getActivity();
db = new MyDatabase(ctx);
allBands = db.getBands();
ListAdapter adapter = new SimpleCursorAdapter (ctx,
R.layout.listelement,
allBands,
new String[] {"BandName"},
new int[] {R.id.text15});
getListView().setAdapter(adapter);
return Layout5;
}
Почему это дает мне "Просмотр контента еще не создан" В лог-кате? программа закроется, когда откроется фрагмент...
Я решил это, переместив адаптер и getListview в onActivityCreated (...).
onCreateView просто раздувает и возвращает макет.
A Fragment
обычно должен помещаться внутри Activity
, а onCreateView()
будет вносить вкладку Fragment
в свой контейнер Activity
.
Цитата из http://developer.android.com/guide/topics/fundamentals/fragments.html
Фрагмент обычно используется как часть пользовательского интерфейса деятельности и вносит свой вклад в работу.
Таким образом, проблема может быть вызвана отсутствием setContentView()
в вашем контейнере Activity
вместо вашего Fragment
.
У меня была такая же проблема, но моя ошибка заключалась в том, чтобы вызвать (невидимый) фрагмент из фоновой задачи через интерфейс. поэтому невидимый фрагмент попытался использовать его представление, которое не было доступно... Я исправил его с помощью одного и того же решения: функция интерфейса проверяет, является ли фрагмент isVisible(). Спасибо, что показали мне правильное направление...
public void updateListInterface(){
if(this.isVisible()) {
this.initListAdapter();
getLoaderManager().restartLoader(0, null, this);
} else {
Log.v(TAG, "view is not visible");
}
}