2013-05-17 5 views
2

Так что я не очень опыт Android программист, поэтому, пожалуйста, быть нежным со мной :)Диалоговое окно исчезает при смене ориентации в фрагменте

Я пытаюсь создать приложение, которое использует fragements и внутри одного из этих фрагментов Я вызываю пользовательское диалоговое окно.

//create dialog 
final Dialog dialog = new Dialog(getActivity()); 
dialog.setCancelable(false); 
dialog.setContentView(R.layout.fragment_update_dialog); 

//set up data in dialog here 

Button bUpdate = (Button) dialog.findViewById(R.id.bDialogUpdate); 
bUpdate.setOnClickListener(new OnClickListener() 
{ 
//define onclick listener code here 
}); 
dialog.show(); 

Этот код отлично работает, и у меня нет проблем с ним. Но когда меняется ориентация экрана, мое диалоговое окно исчезает.

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

Я пробовал «трюк» с файлом манифеста, но он не работает. (Возможно, потому, что он находится во фрагменте, а не в активности?)

Мой файл манифеста включает;

<activity 
     android:name="com.mycompany.myapp.MainActivity" 
     android:configChanges="keyboardHidden|orientation" 
.... 

и в моей основной деятельности я имею

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 
setContentView(R.layout.activity_main); 
} 

Но это не работает.

Я также вижу, что многие комментарии говорят, что это не рекомендуется, но не может понять, как решить эту проблему.

Спасибо за вашу помощь

+1

Отметьте мой ответ в этой [link] (http://stackoverflow.com/questions/16580768/alertdialog-is-disappears-while-reload-the-activity-in-android/16581426#16581426). – Neoh

+0

Извините, но это для alertdialog, а не для специального диалога. –

+0

О, мой, вы могли бы просто заменить его любым удобным вам диалоговым окном. – Neoh

ответ

10

До API 13 появилось новое значение для configChanges атрибут Размер экрана

Так что, если вы используете большие экраны не забудьте добавить в ваших Размер экрана configChanges атрибутов:

android:configChanges="orientation|keyboardHidden|screenSize" 

т.е.

<activity 
    android:name=".MyMainActivity" 
    android:configChanges="orientation|keyboardHidden|screenSize" 
    android:label="@string/app_name" > 

Reference

+0

Thats решил исчезнувший диалог (блестящая благодарность), но создал еще одну проблему! Теперь диалоговое окно остается, я могу выполнить свое обновление. Но когда он возвращается к фрагменту, мой фрагмент исчезает, и весь мой контент (текстовые поля, прядильщики и т. Д.) Исчез. Так что я теперь сделал не так? –

12

Попробуйте вместо этого использовать DialogFragment. Он перезапускается после изменения ориентации. Вам необходимо расширить этот класс, как показано в документации, и использовать его для отображения диалога.

+0

Я смотрел на это, но имел другие проблемы. Это то, что я не мог назвать DialogFragment изнутри другого. Все примеры, которые я нашел в сети, где вы звонили изнутри, и я даже не мог скомпилировать код. –

+0

@ jason.kaisersmith Есть пример того, как я показываю DialogFragment из другого фрагмента: 'CustomDialogFragment dialog = new CustomDialogFragment(); dialog.show (getFragmentManager(), «tag»); 'Вы можете найти, как создать пользовательский DialogFragment в официальной документации по ссылке, которую я изложил выше. – Yoric

+2

DialogFragment - это путь.Не нужно делать непредсказуемые изменения манифеста. – dennisdrew

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

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