Подтвердить что ты не робот

Android - почему это говорит мне, что "Content view еще не создан"?

Это заполнение списка в фрагменте из базы данных:

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;

         }

Почему это дает мне "Просмотр контента еще не создан" В лог-кате? программа закроется, когда откроется фрагмент...

4b9b3361

Ответ 1

Я решил это, переместив адаптер и getListview в onActivityCreated (...).

onCreateView просто раздувает и возвращает макет.

Ответ 2

A Fragment обычно должен помещаться внутри Activity, а onCreateView() будет вносить вкладку Fragment в свой контейнер Activity.

Цитата из http://developer.android.com/guide/topics/fundamentals/fragments.html

Фрагмент обычно используется как часть пользовательского интерфейса деятельности и вносит свой вклад в работу.

Таким образом, проблема может быть вызвана отсутствием setContentView() в вашем контейнере Activity вместо вашего Fragment.

Ответ 3

У меня была такая же проблема, но моя ошибка заключалась в том, чтобы вызвать (невидимый) фрагмент из фоновой задачи через интерфейс. поэтому невидимый фрагмент попытался использовать его представление, которое не было доступно... Я исправил его с помощью одного и того же решения: функция интерфейса проверяет, является ли фрагмент isVisible(). Спасибо, что показали мне правильное направление...

 public void updateListInterface(){
    if(this.isVisible()) {
        this.initListAdapter();
        getLoaderManager().restartLoader(0, null, this);
    } else {
        Log.v(TAG, "view is not visible");
    }
}