2013-11-18 1 views
0

У меня есть одно действие, которое содержит более 20 полей, большинство из этих полей подскажут пользователю установить данные.Как обрабатывать Вращение экрана активности, которое имеет больше данных?

Теперь проблема с конфигурацией изменяется. Если пользователь установил все поля &, он изменил ориентацию экрана, затем все поля будут сброшены, так как действие перезапустится.

Если у меня есть только несколько полей, то я бы пошел с onSaveInstanceState() & onRestoreInstanceState().

Но как обрабатывать эти много полей? Должен ли я хранить все поля? или Есть ли лучший подход?

+2

Вы можете установить атрибут onConfigchanges в mainfest.xml, чтобы остановить активность при перезагрузке –

+0

Почему 20 полей отличаются от двух полей? То, что я делаю, это хранить мои данные пользовательского интерфейса в контейнере, а затем передать этот контейнер в onSaveInstanceState(). Мне нужно обрабатывать только одну ссылку на прямой объект независимо от того, сколько данных у меня в контейнере. – Torben

+0

Эта ссылка вам поможет. http://stackoverflow.com/questions/12049519/edittext-data-is-lost-on-rotating-the-device – Manidroid

ответ

1

добавить android:configChanges="keyboardHidden|orientation|screenSize" к деятельности тега в файле манифеста, но это не лучший способ, пожалуйста, прочитайте Why not use always android:configChanges="keyboardHidden|orientation"? и http://developer.android.com/guide/topics/manifest/activity-element.html#config и http://developer.android.com/guide/topics/resources/runtime-changes.html для выбора наилучшего пути для себя here является хорошим примером для использования с Parcle.

+0

читать http://developer.android.com/guide/topics/manifest/activity-element.html#config.that поможет вам – zohreh

+0

Спасибо Zohreh http://stackoverflow.com/questions/7818717/why-not-use-always-androidconfigchanges-keyboardhiddenorientation link очень хорошо –

+0

добро пожаловать – zohreh

1

Попробуйте этот путь

<activity 
    android:name=".ActivityName" 
    android:configChanges="orientation|screenSize|keyboardHidden"/> 
1

В то время как вы можете предотвратить деятельность от вращения, чтобы избежать этой проблемы, то это должно быть сделано только в особых обстоятельствах. Кроме того, существуют и другие ситуации, когда изменения конфигурации могут иметь место и вызывать проблемы. Для полного обсуждения см. Это: Why not use always android:configChanges="keyboardHidden|orientation"?

Итак, я хочу сказать, что вместо этого вы создаете класс держателя, который реализует Parcelable. Затем на onSaveInstanceState(Bundle outState) просто позвоните outState.putParcelable(key, yourParcelableObject). Вам все равно нужно обновить соответствующие поля и этот класс, но, по крайней мере, вы избежите иметь несколько ключей и вызывать отдельных put в комплекте.

 Смежные вопросы

  • Нет связанных вопросов^_^