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

ListRragment "показ контента еще не создан" в Rotate

У меня есть расширенный ListFragment, с этим onViewCreated()

public void onViewCreated(View v,Bundle savedInstanceState) {
    super.onViewCreated(v, savedInstanceState);
    mListener.onFragmentAction(0x000A);
    if (mAdapter != null) {
        getListView().setAdapter(mAdapter);
    }
}

mListener.onFragmentAction вызывает основное действие для присоединения некоторых слушателей и отправки адаптера в список listView (logFrag - это ссылка на MyListFragment)

public void populateLogFrag() {
//line 225  logFrag.getListView().setOnItemLongClickListener(myEventListener);
            logFrag.getListView().setOnItemClickListener(myEventListener);
            refreshLogAdapter(provideLogAdapter());
}

Приложение загружается нормально, но после изменения конфигурации (поворот устройства) я получаю следующую трассировку стека:

11-22 14:58:24.336: E/AndroidRuntime(22261): Caused by: java.lang.IllegalStateException: Content view not yet created
11-22 14:58:24.336: E/AndroidRuntime(22261):    at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328)
11-22 14:58:24.336: E/AndroidRuntime(22261):    at android.support.v4.app.ListFragment.getListView(ListFragment.java:222)
11-22 14:58:24.336: E/AndroidRuntime(22261):    at com.berrmal.timetracker.MainActivity.populateLogFrag(MainActivity.java:225)
11-22 14:58:24.336: E/AndroidRuntime(22261):    at com.berrmal.timetracker.MainActivity.onFragmentAction(MainActivity.java:282)
11-22 14:58:24.336: E/AndroidRuntime(22261):    at com.berrmal.timetracker.MyListFragment.onViewCreated(MyListFragment.java:23)

Я не могу понять, почему ListView еще не создан, так как я вызываю его после того, как метод Fragment onCreateView уже вернулся и во время onViewCreated(). Я нашел нить или два со связанными названиями, но решения, похоже, не применялись здесь.

4b9b3361

Ответ 1

Переместите код с onViewCreated на onActivityCreated. Как правило, все, что использует виджеты пользовательского интерфейса, должно быть в onActivityCreated.