Форум программистов, компьютерный форум CyberForum.ru

ViewPager.setCurrentItem() внутри LoaderCallbacks.onLoadFinished() - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Прогресс бар в кнопку http://www.cyberforum.ru/android-dev/thread1359839.html
Здравствуйте! Подскажите пожалуйста как сделать кнопку, умеющую на себе отображать прогресс выполнения задачи. В стандартной <Button /> подобного параметра я не нашёл.
Программирование Android Листать картинки На устройстве есть папка с картинками подскажите как отобразить их на экране по одной а при проведении по картинке в бок появлялась другая. Отображать понял как а вот листать как не разобрался. http://www.cyberforum.ru/android-dev/thread1359749.html
Android и VS 2012 Программирование Android
Доброго времени суток. Решил попробовать написать приложение под андроид, погуглил, нашел интересную штуку xamarin для VS. установил все, что просилось. При создании приложения с активити проблем нет, а вот с дизайнером есть. За помощь очень буду благодарен.
Программирование Android Размеры экранов планшетов
Всем привет. Вот какая штука. У гуглов в доках сказано что если в папочку sw600dp положить разметку, то она будет самостоятельно работать на планшетах от 7 дюймов. Но вот какая штука есть планшетик 7 дюймов и он эту разметочку запускать не хочет. Почему так?
Программирование Android Скрытое приложение http://www.cyberforum.ru/android-dev/thread1359491.html
Доброго времени суток. Появилось необходимость реализовать следующие задачи в приложении: 1. Автозагрузка 2. Работа в фоновом режиме и отсутствие иконок приложения в менюшках телефна. 3. Обработка нажатия определённых комбинаций аппаратных клавиш. 4. Возможность отправки по почте сообщений\файлов. Грубо говоря нужно скрытое приложение, которое что-то делает при нажатии на определённые...
Программирование Android At android.widget.LinearLayout.setChildFrame Layout в Layout-те Нужен совет бывалых. У меня есть активити которое запускается с мейн активити, на нем лежит Layout (горизонтальный) в котором 2й RelativeLayout (для того чтобы компоненты шли не только по порядку) И я в этом RelativeLayout изменяю состояние компонент (чекбоксов) программно при открытии активити. Цырк начинается когда я 5й раз открываю 2ю активити мне бет ошибку at... подробнее

Показать сообщение отдельно
Kemaweyan
2 / 2 / 1
Регистрация: 16.12.2014
Сообщений: 5

ViewPager.setCurrentItem() внутри LoaderCallbacks.onLoadFinished() - Программирование Android

22.01.2015, 22:59. Просмотров 520. Ответов 1
Метки (Все метки)

Столкнулся с проблемой. В приложении главная активность - список ListView, при выборе элемента списка открывается новая активность с ViewPager, где должен отображаться выбраный элемент списка («подробная информация») с возможностью пролистывания. Данные берутся из БД через LoaderManager. Проблема состояит в том, что в этом случае отваливается панель действий фрагмента, которая появляется только после пролистывания.

Приведу пример. Есть список из, допустим, 10 элементов. Если нажать на элемент №5, то откроется вторая активность с этим самым 5 элементом, но панели дейсвий не будет видно. Если пролистнуть на №4 или №6 - панель появляется. Если потом вернуться на №5 - панель есть. onCreateOptionsMenu фрагмента во всех случаях вызывается.

Проблема эта проявляется только в том случае, если используется LoaderManager, а точнее если переключение на выбраный элемент ViewPager.setCurrentItem() вызывать внутри LoaderCallbacks.onLoadFinished(). Если этот вызов убрать, то при выборе любого элемента списка будет открываться первый (первая страница ViewPager) и с панелью действий всё будет нормально. Аналогично нет проблем, если отказаться от LoaderManager и весь код выполнять в onCreate активности (загрузка курсора, создание адаптера, переключение на выбраную страницу). Но это же не совсем корректно - грузить данные из БД в главном потоке.

В документации к LoaderCallbacks про onLoadFinished() вычитал вот что:

Note that normally an application is not allowed to commit fragment transactions while in this call, since it can happen after an activity's state is saved.
Т.е. получается, что вызов ViewPager.setCurrentItem() в данном месте не совсем правильный? Это могло бы объяснить странный баг с панелью, но как тогда иначе переключить страницу?

Добавлено через 4 часа 6 минут
Проблему, похоже, решил. Помогло это руководство. Конкретно нужно было, видимо, вынести ViewPager.setAdapter() из onLoadFinished() в onCreate(). Для этого пришлось переписать класс адапртера, чтоб можно было присваивать курсору null, а потом менять курсор при необходимости. Теперь панель не пропадает.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru