У меня была такая же проблема с библиотекой android-support-v4-googlemaps
. Решение было довольно простым после тщательного прочтения работы фрагментов. В основном, каркас сохраняет состояние фрагментов при вращении. Итак, что вам нужно сделать, это только создать экземпляры ваших фрагментов, если нет сохраненного состояния (т.е. при первом запуске вашей активности).
Вот пример кода, который работал для меня:
public class MyMapFragmentActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
//... init views, do stuff ...
// Only instantiate fragments at first run
if (savedInstancestate == null) {
// Add map & list fragments
FragmentManager fm = getSupportFragmentManager();
MapFragment mapFragment = new MapFragment();
AnotherFragment another = new AnotherFragment();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_map, mapFragment, "fragment_map");
ft.add(R.id.fragment_another, anotherFragment, "fragment_another");
ft.commit();
}
//... do more stuff ...
}
}
В этом случае я даже не переопределил onSavedInstanceState()
, так как у меня не было ничего для сохранения. Имейте в виду, что это решение является с использованием библиотеки FragmentMapActivity hack.
Надеюсь, это поможет.