Android - почему это говорит мне "Просмотр контента еще не создан"? - PullRequest
20 голосов
/ 15 февраля 2012

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

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;

         }

Почему это дает мне «Представление содержимого, еще не созданное» в logcat?программа принудительно закрывается при открытии фрагмента ...

Ответы [ 3 ]

56 голосов
/ 16 февраля 2012

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

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

2 голосов
/ 15 февраля 2012

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

Цитируется из http://developer.android.com/guide/topics/fundamentals/fragments.html

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

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

1 голос
/ 12 августа 2015

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

 public void updateListInterface(){
    if(this.isVisible()) {
        this.initListAdapter();
        getLoaderManager().restartLoader(0, null, this);
    } else {
        Log.v(TAG, "view is not visible");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...