2014-01-08 3 views
1

Alright, поэтому у меня немного проблемы и, очевидно, по названию Я точно не знаю, как выразить это («делает вещи нулевые»? ​​На самом деле?)изменение ориентации делает вещи обнулить

Во всяком случае , У меня есть Fragment внутри FragmentActivity, который, когда создается Fragment, сразу бросает диалог на экран и начинает AsyncTask (который захватывает информацию с сервера). Проблема, с которой я сталкиваюсь, заключается в изменении ориентации, когда происходит AsyncTask.

Вначале я продолжал получать «вашу активность, просочился окно» или что-то в этом роде из-за появившегося диалогового окна (я просто просто отменил диалог в), однако теперь я вижу, что ориентация изменение вызывает getActivity() изнутри Fragment возвращает null, а также SharedPreference, который содержит IP-адрес, становится нулевым (и, поскольку он не может найти значение SharedPreference, он переходит в значение по умолчанию, которое является пустой строкой.

Итак, как я смогу сменить эту ориентацию?

+0

не может сказать, является ли это дубликат, но ответ Мартина Казареса отличается от того, который указан в ссылке, и он работает. –

+0

Является ли ваша асинтекса внутренней для класса? или он статичен? – marcinj

ответ

7

Если вы не хотите, чтобы ваш фрагмент был воссозданы и полностью зависят от конфигурации Изменен механизм ОС, почему бы вам просто установить фрагмент как:

fragment.setRetainInstance(true); 

Это предотвратит ваш фрагмент из воссоздаются при изменении конфигурации происходит родительскую деятельность в соответствии с Документ Google:

Управление тем, сохраняется ли экземпляр фрагмента через операцию повторное создание (например, с изменения конфигурации). Это может быть только , используемое с фрагментами, не находящимися в задней части. Если установлено, жизненный цикл фрагмента будет немного отличаться при восстановлении активности

Надеюсь, что это поможет!

С уважением!

+0

Да, тестируйте его сейчас, и он работает до сих пор. –

+0

Хорошо, если бы ответ был полезен, было бы неплохо, если бы вы отметили его как правильное, чтобы люди не торопились ответить на ваши вопросы позже. –

+0

Терпение - это добродетель. «Вы можете принять ответ за 2 минуты» –

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