Сохранения View во фрагменте при повороте экрана
Сохранения View во фрагменте при повороте экрана
У меня внутри активити находится фрагмент. В последнем я выставляю setRetainInstance(true), чтобы не было нового инстанса фрагмента. Внутри фрагмента есть длинный список, который получает данные из сетевого запроса.
Я бы хотел, чтобы при повороте экрана:
1. Список не обнулялся
2. Позиция скроллинга списка оставалась на месте.
То есть мне нужно, чтобы статус этого ListView оставались неизменными, то есть полностью пересохранялся при повороте (а не только данные из него).
Всякие android:configChanges понятное дело, отметаю.
Как лучше всего это сделать?
Я бы хотел, чтобы при повороте экрана:
1. Список не обнулялся
2. Позиция скроллинга списка оставалась на месте.
То есть мне нужно, чтобы статус этого ListView оставались неизменными, то есть полностью пересохранялся при повороте (а не только данные из него).
Всякие android:configChanges понятное дело, отметаю.
Как лучше всего это сделать?
Arbeit macht Fry
Re: Сохранения View во фрагменте при повороте экрана
Только явно сохранять данные из адаптера в onSaveInstanceState:
[syntax=java5]String[] values = mAdapter.getValues();
savedState.putStringArray("myKey", values);[/syntax]
и если onSaveInstanceState != null то создавать новый инстанс адаптера с этими данными.
[syntax=java5]if (savedInstanceState != null) {
String[] values = savedInstanceState.getStringArray("myKey");
if (values != null) {
mAdaptor = new MyAdaptor(values);
}
}[/syntax]
Либо такскать за собой синглтон, хотя это и не желательно, решение с Retain фрагментом всегда лучше.
Ну а скролить можно getListView().setSelection(21); либо getListView().smoothScrollToPositionFromTop(position,offset,duration); Думаю тем же макаром можно и получить текущую активную позицию.
В общем вывод простой - все ручками
[syntax=java5]String[] values = mAdapter.getValues();
savedState.putStringArray("myKey", values);[/syntax]
и если onSaveInstanceState != null то создавать новый инстанс адаптера с этими данными.
[syntax=java5]if (savedInstanceState != null) {
String[] values = savedInstanceState.getStringArray("myKey");
if (values != null) {
mAdaptor = new MyAdaptor(values);
}
}[/syntax]
Либо такскать за собой синглтон, хотя это и не желательно, решение с Retain фрагментом всегда лучше.
Ну а скролить можно getListView().setSelection(21); либо getListView().smoothScrollToPositionFromTop(position,offset,duration); Думаю тем же макаром можно и получить текущую активную позицию.
В общем вывод простой - все ручками
Re: Сохранения View во фрагменте при повороте экрана
altwin, есть тут проблема с сохранением всех отдельных характеристик.
Во многих приложениях, которые мне попадаются, можно крутить экран как угодно. На списках, изображениях и вообще любых элементах. Все данные сохраняются и положение скроллинга экрана тоже сохраняется. Как-то трудно представить, что для каждого фрагмента пишутся "костыли" по сохранению отдельно данных. Ну и, как говорилось, удержание активити там явно не используется.
Может, мы что-то не знаем?
Во многих приложениях, которые мне попадаются, можно крутить экран как угодно. На списках, изображениях и вообще любых элементах. Все данные сохраняются и положение скроллинга экрана тоже сохраняется. Как-то трудно представить, что для каждого фрагмента пишутся "костыли" по сохранению отдельно данных. Ну и, как говорилось, удержание активити там явно не используется.
Может, мы что-то не знаем?
Arbeit macht Fry
Re: Сохранения View во фрагменте при повороте экрана
Если на фрагментах однотипные данные, можно создать свой класс экстендс фрагмент и накодить там че-нить обобщенное для упрощения сейва.Fry писал(а):altwin, есть тут проблема с сохранением всех отдельных характеристик.
Во многих приложениях, которые мне попадаются, можно крутить экран как угодно. На списках, изображениях и вообще любых элементах. Все данные сохраняются и положение скроллинга экрана тоже сохраняется. Как-то трудно представить, что для каждого фрагмента пишутся "костыли" по сохранению отдельно данных. Ну и, как говорилось, удержание активити там явно не используется.
Может, мы что-то не знаем?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Сохранения View во фрагменте при повороте экрана
А можно пояснить это "понятное дело" ?Всякие android:configChanges понятное дело, отметаю.
Re: Сохранения View во фрагменте при повороте экрана
Ну как бы depricated считается этот подход. Даже если у нас все на фрагментах, и не нужно следить за правильной смены лэйоута в активити, на сколько я знаю, этот подход не безопасен для памяти.А можно пояснить это "понятное дело" ?
Arbeit macht Fry
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Сохранения View во фрагменте при повороте экрана
Он вполне безопасен для памяти
Такие приложения как Google maps, pinterest и wunderlist, используют сохранение активности. У карту гугл правда это выглядит вот так
[syntax=xml]<activity android:alwaysRetainTaskState="true" android:configChanges="orientation|uiMode|screenSize|fontScale" android:label="@string/MAPS_APP_NAME" android:launchMode="singleTask" android:name="com.google.android.maps.MapsActivity" android:screenOrientation="user" android:theme="@style/GmmTheme">
...[/syntax]
И это три из трёх приложений, которые у меня под рукой, декомпилированные. Я также начинаю использовать данный подход - сохранение активности. Так приложение становится куда отзывчивее. И ваша проблема решится сама собой.
Такие приложения как Google maps, pinterest и wunderlist, используют сохранение активности. У карту гугл правда это выглядит вот так
[syntax=xml]<activity android:alwaysRetainTaskState="true" android:configChanges="orientation|uiMode|screenSize|fontScale" android:label="@string/MAPS_APP_NAME" android:launchMode="singleTask" android:name="com.google.android.maps.MapsActivity" android:screenOrientation="user" android:theme="@style/GmmTheme">
...[/syntax]
И это три из трёх приложений, которые у меня под рукой, декомпилированные. Я также начинаю использовать данный подход - сохранение активности. Так приложение становится куда отзывчивее. И ваша проблема решится сама собой.
Re: Сохранения View во фрагменте при повороте экрана
Mikhail_dev, искушаете прям.
Я, честно говоря, это не проверял, но утверждения о "невосоздании" затертого активити видел в разных местах.
А еще почему не рекомендуют так делать - вариантов смены конфигурации много всяких, всех не предусмотреть. И могут вылезать разные странны баги у пользователей, если у них это происходит.
Ну вот, в частности http://stackoverflow.com/questions/7818 ... rientationОн вполне безопасен для памяти
То есть, например, если приложение у нас свернуто, а память, выделенная на активити попала под очистику, то мы получим ошибку, т.к. активити пересоздаться не сможет. Приоритет для неочистки у свернутого приложения высокий, но не высший. Если так, то это должно приводить к утечкам памяти, так все, на что это активити ссылается будет недоступно для гарбич коллектора.Edit: More importantly, though, as hackbod points out in the comments, your activity will also be restarted when your app is in the background and Android decides to free up some memory by killing it. When the user comes back to your app, Android will attempt to restart the activity in the same way it does if there was some other configuration change. If you can't handle that - the user will not be happy...
Я, честно говоря, это не проверял, но утверждения о "невосоздании" затертого активити видел в разных местах.
А еще почему не рекомендуют так делать - вариантов смены конфигурации много всяких, всех не предусмотреть. И могут вылезать разные странны баги у пользователей, если у них это происходит.
Arbeit macht Fry
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Сохранения View во фрагменте при повороте экрана
С чего это вдруг она не будет пересоздаваться? Она будет прекрасно пересоздана.То есть, если приложение у нас свернуто, а память, выделенная на активити попала под очистику, то мы получим ошибку, т.к. активити пересоздаться не сможет. Приоритет для неочистки у свернутого приложения высокий, но не высший. Если так, то это должно приводить к утечкам памяти, так все, на что это активити ссылается будет недоступно для гарбич коллектора.
По ссылке не нашел ничего, что говорит об утечках памяти. Там лишь общие моменты говорят.
Они вот на что ссылаются, мол по этой причине плохо. И да, это плохо так решать проблему. Если падает при повороте, то надо решать проблему!In many cases, people mistakenly believe that when they have an error that is being generated by an orientation change ("rotation"), they can simply fix it by putting in android:configChanges="keyboardHidden|orientation".
В итоге могу сказать что нет проблем с сохранением активности. Просто надо быть готовым к тому, что активность будет пересоздаваться (отключать все зависимости в onStart/onStop). И понимать, что вьюшка пересоздаваться не будет, поэтому там, где надо и View сменить при повороте, там не стоит сохранять активность. Хотя почему не стоит? Лично я создал вьюшку, где при повороте экрана просто прячу контейнер на вьюшке, тем самым манипулирую даже вьюшкой.
У вас может выгрузиться активность, это нормально. Но что с того? В onCreate заново создадится. Да, потеряется выбранная нумерация. Можете для этого еще и состояние активности сохранить.
Re: Сохранения View во фрагменте при повороте экрана
Ну вопервых это не костыли, а особенность работы fragment retain, по сути фрагмент просто не пересоздается и вы можете крутить экран как угодно в процессе. Другое дело, когда возникает проблема с отдельными элементами, но опять же, реализация для адаптера может быть непосредственно в самом адаптере учитывая пересоздание, а не новый вызов конструктора и тогда ничего таскать за собой не придется. Более того в классической MVP модели android сам по себе UI по сути - это совокупность View и Presenter, и если view перерисовывается при повороте экрана и смене ориентации, то presenter отвечающий за логику формирования этого view не меняется. Обычно тут находятся обсерверы, которые меняют состояние view только в случае наступления события, в противном же случая не важно что вы там крутите, view меняет только отрисовку содержимое константно.Fry писал(а):altwin, есть тут проблема с сохранением всех отдельных характеристик.
Во многих приложениях, которые мне попадаются, можно крутить экран как угодно. На списках, изображениях и вообще любых элементах. Все данные сохраняются и положение скроллинга экрана тоже сохраняется. Как-то трудно представить, что для каждого фрагмента пишутся "костыли" по сохранению отдельно данных. Ну и, как говорилось, удержание активити там явно не используется.
Может, мы что-то не знаем?
Re: Сохранения View во фрагменте при повороте экрана
Во первых активити которая прибита системой хоть и выгруженна из памяти, но по прежнему находится в стеке и при повторном вызове успешно пересоздается, процесс смены ориентации и другие подобные обрабатываются именно для того, чтобы избежать пересоздания. К примеру если вы нажали кнопку sign in и перевернули девайс в процессе пересоздание активити вызовет проблемы, ровно как и перезагружать данные либо заново начинать кеширование видеофайла -глупо. Проверить можно легко, емулятору можно запретить выоплнение фоновых процессов и в буквальном смысле посмотреть что происходит с приложением при переходе в бекграунд и возвращении в момент когда система его убила.Fry писал(а): То есть, например, если приложение у нас свернуто, а память, выделенная на активити попала под очистику, то мы получим ошибку, т.к. активити пересоздаться не сможет. Приоритет для неочистки у свернутого приложения высокий, но не высший. Если так, то это должно приводить к утечкам памяти, так все, на что это активити ссылается будет недоступно для гарбич коллектора.
Я, честно говоря, это не проверял, но утверждения о "невосоздании" затертого активити видел в разных местах.
А еще почему не рекомендуют так делать - вариантов смены конфигурации много всяких, всех не предусмотреть. И могут вылезать разные странны баги у пользователей, если у них это происходит.
По поводу приоритета, как бы есть empty \ empty background \ service process \ visible \ foreground process, собственно только последние два обычно система не трогает (visible, это к примеру состояние активити при открытом диалоге, когда она видима но не переднем плане), по поводу попадания процесса в бекграунд лучше остановиться на уровне service, а все остально считать одним, поскольку девайсы бывают разные с разными ограничениями, на которые может влиять куча факторов и я сомневаюсь, что вас устроит поведение когда ваш процесс один девайс будет прибивать раньше другого просто потому что процесс с большим приоритетом на смерть в этом девайсе вообще права на жизнь не имеет.
Re: Сохранения View во фрагменте при повороте экрана
Код: Выделить всё
Просто надо быть готовым к тому, что активность будет пересоздаваться (отключать все зависимости в onStart/onStop).
И еще вопрос. Как у нас тогда нужно настраивать фрагменты при таком подходе? Получается setRetainInstance(true) теряем смысл?
И смену портретного/альбомного вида во фрагментах, получается, нужно делать вручную (ну тогда, когда это нужно)?
Черт, что-то я склоняюсь к этому все большеВ итоге могу сказать что нет проблем с сохранением активности.
Arbeit macht Fry
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Сохранения View во фрагменте при повороте экрана
А потому что нефиг держат слушатели прочую лабуду в режиме, когда приложение свёрнуто. Для чего юзеру, который свернул приложение необходимо к примеру получать какие-то данные в UI, когда он их не видит?Я тут вас не очень понял. Почему именно в onStart/onStop? У нас же onCreate и onDestory вызывается только один раз, вроде при задании android:configChanges.
Не совсем. Активность может быть выгружена, а сам фрагмент, как объект, останется в памяти.И еще вопрос. Как у нас тогда нужно настраивать фрагменты при таком подходе? Получается setRetainInstance(true) теряем смысл?
Фрагмент вставляется в контейнер. На сколько я понимаю, для фрагментов поворот экрана неприменим.И смену портретного/альбомного вида во фрагментах, получается, нужно делать вручную (ну тогда, когда это нужно)?
Забавный вы человек. Скачайте приложение к примеру pinterest (да и вообще посмотрите рейтинг и отзывы), о котором я узнал из книги по дизайну, как об одном из очень успешных UI и UX.Черт, что-то я склоняюсь к этому все больше
Вот его манифест
[syntax=xml]
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" package="com.pinterest" platformBuildVersionCode="21" platformBuildVersionName="5.0.1-1624448">
<uses-feature android:glEsVersion="0x20000" android:required="true"/>
<supports-screens android:smallScreens="false"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.READ_PROFILE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name=".permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<permission android:name=".permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application android:allowBackup="false" android:hardwareAccelerated="true" android:icon="@drawable/app_icon" android:label="@string/app_name" android:name="com.pinterest.base.Application" android:supportsRtl="false" android:theme="@style/Theme.Pinterest">
<activity android:label="@string/app_name" android:name="com.pinterest.activity.PinterestActivity" android:noHistory="true" android:theme="@android:style/Theme.Light.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.pin.PinActivity" android:theme="@style/Theme.Pinterest.White" android:windowSoftInputMode="stateHidden|adjustResize"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.task.activity.MainActivity" android:theme="@style/Theme.Pinterest.Home" android:windowSoftInputMode="adjustPan"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.pinterest.activity.nux.NUXActivity" android:theme="@style/Theme.Pinterest.NUX"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.user.UserSetImageActivity" android:theme="@style/Theme.Pinterest.DialogActivity" android:windowSoftInputMode="stateHidden|adjustResize"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.unauth.UnauthWallActivity" android:windowSoftInputMode="stateHidden|adjustPan"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.signin.TwitterAuthActivity"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.signin.RakutenAuthActivity"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:launchMode="singleTop" android:name="com.pinterest.activity.sendapin.SendPinActivity" android:theme="@style/Theme.Pinterest.SlideActivity" android:windowSoftInputMode="stateHidden|adjustPan"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.create.CreateActivity" android:theme="@style/Theme.Pinterest.DialogActivity" android:windowSoftInputMode="stateHidden|adjustResize"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.create.RepinActivity" android:theme="@style/Theme.Pinterest.DialogActivity" android:windowSoftInputMode="stateHidden|adjustResize"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.create.PinEditActivity" android:theme="@style/Theme.Pinterest.DialogActivity" android:windowSoftInputMode="stateHidden|adjustResize"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/create_pin" android:launchMode="singleTop" android:name="com.pinterest.activity.create.PinItActivity" android:theme="@style/Theme.Pinterest.DialogActivity" android:windowSoftInputMode="stateHidden|adjustResize">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
<data android:mimeType="image/*"/>
</intent-filter>
<intent-filter>
<action android:name="com.pinterest.action.PIN_IT"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="" android:name="com.pinterest.activity.web.WebViewActivity" android:windowSoftInputMode="stateHidden|adjustResize"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/app_name" android:name="com.pinterest.activity.webhook.WebhookActivity" android:theme="@style/Theme.Pinterest.DialogActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="*.pinterest.com" android:scheme="http"/>
<data android:host="*.pinterest.com" android:scheme="https"/>
<data android:host="pinterest.com" android:scheme="http"/>
<data android:host="pinterest.com" android:scheme="https"/>
<data android:host="*.pinterdev.com"/>
<data android:scheme="pinterest"/>
<data android:scheme="pinit"/>
<data android:scheme="pinterest://http"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="pinterest"/>
</intent-filter>
</activity>
<service android:name="com.pinterest.GCMIntentService"/>
<service android:name="com.pinterest.service.PinterestWorkerService"/>
<service android:name="com.pinterest.service.NotificationService"/>
<receiver android:name="com.pinterest.receiver.GeofenceReceiver"/>
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="com.pinterest"/>
</intent-filter>
</receiver>
<activity android:label="@string/app_name" android:name="com.facebook.LoginActivity" android:theme="@style/Theme.Pinterest.Translucent"/>
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<receiver android:name="com.pinterest.appwidget.PWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/pwidget_info"/>
</receiver>
<service android:exported="false" android:name="com.pinterest.appwidget.PWidgetService" android:permission="android.permission.BIND_REMOTEVIEWS"/>
<activity android:launchMode="singleTask" android:name="com.pinterest.appwidget.SwitcherActivity" android:theme="@style/Theme.Pinterest.White"/>
<activity android:exported="true" android:name="com.pinterest.sdk.PinterestOauthActivity" android:theme="@style/Theme.Pinterest.White"/>
<receiver android:name="com.pinterest.receiver.DeviceStartReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<receiver android:name="com.pinterest.receiver.SignupNotificationReceiver"/>
<receiver android:name="com.pinterest.receiver.GlobalDataUpdateReceiver"/>
<meta-data android:name="com.crashlytics.ApiKey" android:value="05a6e8f0efd5cab488c1871e5dd7e03ab597d9ae"/>
<meta-data android:name="com.pinterest.mapbox.ApiKey" android:value="sk.eyJ1IjoicGludGVyZXN0IiwiYSI6ImNRLXhJOHMifQ.FCS6VzbiUVLenbkIf6MPRg"/>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDybBm_hqwipeuJdUDfpMjYdPxGG3jJjAA"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
</application>
</manifest>
[/syntax]
Re: Сохранения View во фрагменте при повороте экрана
Ну вот, к примеру, я использую Robospice для организации Rest-клиента. А в нем нужно spiceManager стартовать и стопать в onStart/onStop соответственно.А потому что нефиг держат слушатели прочую лабуду в режиме, когда приложение свёрнуто. Для чего юзеру, который свернул приложение необходимо к примеру получать какие-то данные в UI, когда он их не видит?
[syntax=java] @Override
public void onStart() {
super.onStart();
spiceManager.start();
}
[/syntax]
и
[syntax=java] @Override
public void onStop() {
if (spiceManager.isStarted()) {
spiceManager.shouldStop();
}
super.onStop();
}
[/syntax]
И не всегда это правильно переносить во фрагмент.
Ну если вам это надо, вы можете внутри фрагмента узнать ориентацию экрана и динамически поменять его вьюху.Фрагмент вставляется в контейнер. На сколько я понимаю, для фрагментов поворот экрана неприменим.
Есть такоеЗабавный вы человек.
А из какой книги, если не секрет? Я просто как раз сейчас читаю по ui-паттернам, http://www.amazon.com/Android-Design-Pa ... 128&sr=8-1 Вот и интересно.Скачайте приложение к примеру pinterest (да и вообще посмотрите рейтинг и отзывы), о котором я узнал из книги по дизайну, как об одном из очень успешных UI и UX.
Arbeit macht Fry
Re: Сохранения View во фрагменте при повороте экрана
Сейчас экспериментировал с android:configChanges на темах Holo есть такой эффект, чтобы ActionBar по-разному маcштабируется с ним и без него при повороте. C остальными View элементами, похоже та же ситуация.
Без него
https://yadi.sk/i/t2Oe1HzRfpjQQ
С ним
https://yadi.sk/i/G9abL3pWfpjTm
Какие-то решения есть, чтобы AB правильно масштабировался?
Без него
https://yadi.sk/i/t2Oe1HzRfpjQQ
С ним
https://yadi.sk/i/G9abL3pWfpjTm
Какие-то решения есть, чтобы AB правильно масштабировался?
Arbeit macht Fry
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Сохранения View во фрагменте при повороте экрана
https://drive.google.com/file/d/0B58AYq ... sp=sharingА из какой книги, если не секрет?
И я об этом говорю, что надо юзать onStart и onStopНу вот, к примеру, я использую Robospice для организации Rest-клиента. А в нем нужно spiceManager стартовать и стопать в onStart/onStop соответственно.
а сам он не справится?Ну если вам это надо, вы можете внутри фрагмента узнать ориентацию экрана и динамически поменять его вьюху.
Я не знаю, но можете попробовать вообще уйти от AB. Сейчас гугл выпустил новую тулзу как альтернативу - Toolbar. Правда я не знаю, бекпортирован он или нет.Какие-то решения есть, чтобы AB правильно масштабировался?