С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Пересоздание Fragment при листании, как избавиться? - Программирование Android

27.09.2014, 08:06. Просмотров 1139. Ответов 12
Метки нет (Все метки)

Попробовал сделать таб-слайдер. Закладки с возможностью листать их слайдом.
Столкнулкся с неожиданной "особенностью". Каждая страница-закладка является фрагментом (не знаю как от этого избавиться). В страницу поместил список на основе адаптера. При листании фрагменты ПЕРЕСОЗДАЮТСЯ!
Не знаю почему и не знаю как от этого избавиться! В результате получаю то, что список всегда прыгает наверх. Теоретически могу конечно использовать очередной "костыль" - запоминать и востанавливать позицию в списке до последнего пиксела, но можно ли от этого избавиться???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2014, 08:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пересоздание Fragment при листании, как избавиться? (Программирование Android):

Как победить подтормаживание при листании ViewPager со списками listview? - Программирование Android
Как победить подтормаживание при листании ViewPager со списками listview? если быстро листать (ну или даже не очень быстро), то...

Запретить пересоздание Activity при повороте экрана - Программирование Android
В общем, проблема в заголовке. Собственно сам конфиг из манифеста <activity android:name=".MainActivity" ...

Обновление fragment из другого fragment - Программирование Android
Добрый вечер всем!! Подскажите пожалуйста как обновить один фрагмент из другого (а именно TextView и ArrayAdapter)?

Поворот экрана и пересоздание обьектов. Как делают матёрые разработчики? - Программирование Android
Разрабатываю приложение, решил делать одно активити и FrameLayout в нем, куда будут помещаться фрагменты (настройки, диалоги и т.д.). Все...

Жизненный цикл Activity и Fragment при повороте - Программирование Android
Ребят запутался я совсем. Помогите разобраться. Насколько я знаю при повороте удаляется активити, а соответственно все размещенные на ней...

Ошибка присвоения Событие на кнопку при использовании Fragment - Программирование Android
Пытаюсь идти по схеме предложенной компилятором, через вставку на основную форму фрагментов, но не до конца могу понять как с ними...

12
Max64
20 / 20 / 5
Регистрация: 27.10.2012
Сообщений: 156
28.09.2014, 21:35 #2
Цитата Сообщение от Tester64 Посмотреть сообщение
не знаю как от этого избавиться
Не надо от этого избавляться

Вообще у ViewPager-а попробуйте вызвать метод setOffscreenPageLimit(int limit) http://developer.android.com/referen...Limit%28int%29, в аргумент передайте кол-во табов.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
29.09.2014, 23:25  [ТС] #3
Цитата Сообщение от Max64 Посмотреть сообщение
Вообще у ViewPager-а попробуйте вызвать метод setOffscreenPageLimit(int limit) http://developer.android.com/referen...Limit%28int%29, в аргумент передайте кол-во табов.
Идея класная и кажется даже то что нужно, но почему-то не вызывается!
Говорит не знает такого метода. Показывает красным. Но в онлайн-хелпе нашел...
0
Max64
20 / 20 / 5
Регистрация: 27.10.2012
Сообщений: 156
29.09.2014, 23:32 #4
Какой текст ошибки? Класс ViewPager импортирован?
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2014, 14:48  [ТС] #5
Ненавижу закрытые библиотеки!!!!

У меня засбоила студия - сломалось обновление SDK. Не мог скачать актуальную android.support.v4. Нашел ее в одном из примеров слайд-закладок. На 543Кб. Потом нашел "облегченную" на 136, которая тоже работала. Построил на ней логику. Оказывается она либо слишком старая, либо слишком облегченная. И в ней нет метода setOffscreenPageLimit. Нашел более новую в инете (аж на 740Кб), метод там есть, но теперь ВЕСЬ проект глючит! Прийдется перебирать логику закладок с нуля...

А можно избавиться от библиотеки android.support.v4??? Напрямую ее исходники вставлять? Только самое нужное?
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
30.09.2014, 15:16 #6
Цитата Сообщение от Tester64 Посмотреть сообщение
А можно избавиться от библиотеки android.support.v4??? Напрямую ее исходники вставлять? Только самое нужное?
Дак ведь при компиляции из нее компилятор и выберет только то что нужно. Не будет же приложение все либы полностью за собой таскать.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2014, 15:23  [ТС] #7
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Дак ведь при компиляции из нее компилятор и выберет только то что нужно. Не будет же приложение все либы полностью за собой таскать.
Хоть этим успокоили. Хотя не уверен до конца что есть механизм "это нужно - ата картинка не нужна"...

Но я бы предпочел положить только *.java файлы всесто целой библиотеки. И исходники сокращу и доступ полный и контроль версий у меня в руках - если изменится в худшую сторону только один из классов библиотеки с улучшением другого...
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
30.09.2014, 15:36 #8
Цитата Сообщение от Tester64 Посмотреть сообщение
Хотя не уверен до конца что есть механизм "это нужно - ата картинка не нужна"
Ну а как по другому то? Компилятор же все видит и знает) Если к картинке никто не обращается он про ее существование и не узнает по-моему.

Добавлено через 27 секунд
Не факт конечно. Из личных наблюдений)
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2014, 17:47  [ТС] #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Из личных наблюдений
А я заметил обратное! Если случайно в ресурсах оставил много-мегабайтные картинки, когда ВООБЩЕ не использую картинки, файл получатся многомегабайтным! Ведь обращение к картинке происходит всего-лишь по его коду-индексу. А его можно использовать в любом месте задав через int. Про левые java не знаю, но ошибки в них тоже проверяются, даже если их не использую. Возможно что-то другое происходит в релиз сборке (а не дебюг), но сомневаюсь! Похоже у явы ТУПОЙ компилятор - есть файл = добавляет! Без оптимизаций, как в С++ и в Делфи.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
30.09.2014, 17:59 #10
Ну с файлом тут немножко не так, при его копировании в папку на него создается ссылка в R.class, думаю, по этой причине добавляет.
0
Max64
20 / 20 / 5
Регистрация: 27.10.2012
Сообщений: 156
30.09.2014, 21:07 #11
Цитата Сообщение от Tester64 Посмотреть сообщение
Не мог скачать актуальную android.support.v4
А почему ее приходится скачивать фиг знает где? Средствами IDE легко же добавить в проект

Цитата Сообщение от Spelcrawler Посмотреть сообщение
Дак ведь при компиляции из нее компилятор и выберет только то что нужно. Не будет же приложение все либы полностью за собой таскать.
именно будет таскать все либы только участвует в этом не компилятор а build tool - ant или gradle
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Ну с файлом тут немножко не так, при его копировании в папку на него создается ссылка в R.class, думаю, по этой причине добавляет.
Да, если добавить картинку в одну из директорий /res/drawable, для нее генерируется id в классе R, через который она доступна в коде; если добавить картинку в директорию /assets, для нее не будет сгенерирован id и она будет доступна в коде через InputStream. Ни в какие другие директории кроме /res и /assets не надо добавлять картинки и другие ресурсы, т.к. в итоговом файле apk их не будет.

Вот тут хорошо описан процесс сборки в картинках
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
30.09.2014, 22:02  [ТС] #12
Цитата Сообщение от Max64 Посмотреть сообщение
А почему ее приходится скачивать фиг знает где? Средствами IDE легко же добавить в проект
Согласно инструкциям, файл android-support-v4.jar нужно брать из папки SDK после его скачивания при обновлении средствами самого SDK. У меня в папке его не нашел. Пришлось брать из lib папок чужих проектов. Подключил легко, но оказалось чт у этого файла бывают разные релизы. Чем они отличаются так и не понял. Кроме размера и наличия метода setOffscreenPageLimit.

Кто-нибудь знает, можно ли раздобыть чистые исходники из android-support-v4 и обойтись без самой библиотеки?
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
01.10.2014, 08:31 #13
Цитата Сообщение от Max64 Посмотреть сообщение
именно будет таскать все либы
Ну не знаю, заметил такое, когда подключил либу весом около 500кб, но так и не использовал ее - приложение осталось такого же размера, как и до этого.
Цитата Сообщение от Tester64 Посмотреть сообщение
Кто-нибудь знает, можно ли раздобыть чистые исходники из android-support-v4 и обойтись без самой библиотеки?
Не знаю точно, но у меня при использовании каких нибудь функций из этой либы она автоматом добавляется в ExternalLibrares.
0
01.10.2014, 08:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2014, 08:31
Привет! Вот еще темы с ответами:

Ошибка при конвертации класса Activity в Fragment (SherlockFragment) - Программирование Android
есть такой класс public class MainActivity extends Activity { LinkedList<Product> products = new LinkedList<Product>(); ...

Как разместить карту на Fragment - Программирование Android
Есть решенный класс для запуска карт в FragmentActivity. Как запустить в Fragment? Не могу вызвать GetSupportFragmentManager import...

Как из сервиса запустить fragment - Программирование Android
Привет друзья в общем у меня есть Сервис который при определенных обстоятельствах должен выводить на экран телефона Fragments, подскажите...

[Swipe, Fragment] - интерфейс как у маркета - Программирование Android
Приветствую, которую неделю туплю и не могу сделать интерфейс как у маркета. Задача, сделать интерфейс, чтобы жестом пальца можно было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.