2014-09-26 2 views
0

Для начала я старшеклассник в Китае, поэтому, если мое выражение смущает вас, пожалуйста, простите меня, потому что мой английский не будет таким совершенным.Воспроизводящая деятельность clear listview item

У меня есть активность с viewPager, viewPager содержит четыре listFragment, который загружает данные из базы данных SQList. Адаптером, используемым listFragment, является cursorAdapter.EveryThing идет правильно до повторного создания активности. Я установил кнопку «Назад», чтобы вывести операцию обратно в стек. Если система требует больше ресурсов для запуска других вещей, активность будет уничтожена. Однако, когда я вернусь к активности, элемент списка в первых двух listFragment будет очищен! Но последние два являются нормальными. Я тестировал код, и я гарантирую, что ListView в listFragment и курсор и инициализацию после повторного создания, и я называю

listAdapter.changeCursor(mCursor); //mCursor is the result from database 

после запроса к базе данных.

На мой взгляд, единственное отличие воссоздания от создания - это расслоение в onCreate(). Почему в первый раз создание активности показывает нормальный вид, но повторное создание показывает странный результат.

Спасибо за ваше время.^_^

+0

Итак, чего вы пытаетесь достичь! Не ясно! – Pavlos

+0

Когда я вернусь из заднего стека, элемент listFragment в viewPager будет очищен. Как решить проблему. Это моя проблема. Спасибо –

+0

Тогда, возможно, попробуйте сохранить текущее состояние фрагмента и получить его, когда вернетесь. – Pavlos

ответ

0

Наконец, я нахожу решение самостоятельно. Я обнаружил, что проблема заключается в том, что я вызываю setAdapter() в getItem() в TabAdapter. Однако при повторном создании активности я нахожу, что getItem() не будет вызываться. Однако listFragment в TabViewPager является нормальным, это означает, onCreate() и onViewCreated() в listFragment будут вызываться при повторном создании активности.

Как исправить это: поместите метод setAdapter() в onViewCreated() в listFragment, а не в getItem().