Android: жизненный цикл фрагментов на экране вращения

Я знаю цифру 2 из http://developer.android.com/guide/components/fragments.html Интересно, что происходит из «Fragment Active», когда я поворачиваю экран и в конце концов возвращаюсь в «Fragment Active».

Предположим, что у меня есть приложение, которое отлично работает, независимо от того, начинаю ли я его в портретном или альбомном режиме. Но на экране вращения он сбрасывает

Fragment com.bla.bla did not create a view. 

Этот фрагмент имеет в основном только onCreateView, но ничего другого

 public View onCreateView(LayoutInflater i, ViewGroup c, Bundle s) { return i.inflate(R.layout.mylayout, c, false); } 

Зная, что именно происходит при повороте экрана, я надеюсь решить проблему …

РЕДАКТИРОВАТЬ:

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

main.xml:

 <LinearLayout xmlns:android="http:// and so on" android:layout_width="fill_parent" android:layout_heigt="wrap_content" android:orientation=vertical" android:id="@+id/myContainer"> </LinearLayout> 

Метод onCreate моей деятельности выглядит следующим образом:

 super.onCreate(savedInstanceBundle); setContentView(R.layout.main); Fragment1 f1 = newFragment1(); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.add(R.id.myContainer, f1); //and I need a second fragment Fragment2 f2 = newFragment2(); ft.add(R.id.myContainer, f2); ft.commit(); 

Вращение экрана, похоже, с этим работает (так что спасибо до сих пор!), Но в ландшафте я вижу только первый фрагмент в портрете, который я вижу как второй, так и второй раз (чем чаще я поворачиваю, тем чаще они добавляются). Поэтому либо у меня проблема с макетом, либо я не могу добавить несколько фрагментов, подобных этому. Все еще пытаюсь понять, является ли это проблемой макета, но пока нет подсказки. Любой намек?

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

 ft.replace(R.id.myContainer1, f1); //and I need a second fragment Fragment2 f2 = newFragment2(); ft.replace(R.id.myContainer2, f2); 

Что касается жизненного цикла Fragment – когда вы поворачиваете экран, хостинг- Activity уничтожается и воссоздается; Так что все до onDetach() пор, пока не будет onDetach() следует все, начиная с onAttach() .

Суровый способ знать – это переопределить все методы жизненного цикла и поместить в сообщение журнала все 🙂