En cours de Fragment et de l'Enregistrer sur onSaveInstanceState() Méthode Pour l'Orientation de l'Écran

J'ai une Activité avec de multiples Fragments. Je suis également en utilisant actionbarSherlock pour mes onglets qui a également connecté à des fragments.

Mon Problème est quand je vais faire pivoter l'écran (qui est à la mode portrait au mode paysage et vice-versa), mon activité sera appelée à nouveau de sorte qu'il redémarre mon activité.

Je ne veux pas redémarrer mon activité, mais simplement de rétablir le courant fragment qui a été présenté avant il a été rotation. MERCI de ne pas répondre à android:configChanges="orientation|keyboardHidden" car il n'a pas résolu le problème, mais comme un simple hack. Ma solution a été de la OnsaveInstanceState et onRestoreInstanceState Méthodes, mais je ne sais pas comment l'utiliser avec mon problème. S'il vous plaît aidez-moi avec celui-ci. Aucune réponse sont très appréciés.

CODE:

 public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar actionBar = getSupportActionBar();  
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tabA = actionBar.newTab().setIcon(R.drawable.about);
ActionBar.Tab tabE = actionBar.newTab().setIcon(R.drawable.faq);
ActionBar.Tab tabB = actionBar.newTab().setIcon(R.drawable.sponsors);
ActionBar.Tab tabC = actionBar.newTab().setIcon(R.drawable.map);
ActionBar.Tab tabD = actionBar.newTab().setIcon(R.drawable.destination);
Fragment aboutTab = new PhotosActivity();
Fragment sponsorTab = new SongsActivity();
Fragment mapTab = new HCCMapActivity(); 
Fragment questTab = new FaqActivity(); 
Fragment DestinationTab = new TourActivity();
tabA.setTabListener(new MyTabsListener(aboutTab));
tabB.setTabListener(new MyTabsListener(sponsorTab));
tabC.setTabListener(new MyTabsListener(mapTab));
tabD.setTabListener(new MyTabsListener(DestinationTab));
tabE.setTabListener(new MyTabsListener(questTab));
actionBar.addTab(tabD, 0, true);
actionBar.addTab(tabC, 1, false);
actionBar.addTab(tabA, 2, false);
actionBar.addTab(tabB, 3, false);
actionBar.addTab(tabE, 4, false);
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
//Save UI state changes to the savedInstanceState.
//This bundle will be passed to onCreate if the process is
//killed and restarted.
savedInstanceState.putString("MyString", "Welcome back to Android");
//savedInstanceState.putString("id",)
//etc.
//getSupportFragmentManager().putFragment(savedInstanceState, "fragment", getSupportFragmentManager().findFragmentById(R.id.fragment_place));
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
FragmentManager fragmentManager ;
FragmentTransaction ft ;
super.onRestoreInstanceState(savedInstanceState);
//Restore UI state from the savedInstanceState.
//This bundle has also been passed to onCreate.
String myString = savedInstanceState.getString("MyString");
Log.i("Hello", myString);
fragmentManager =  getSupportFragmentManager();
ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(R.anim.slide_out_left, R.anim.slide_out_right);  
ft.replace(R.id.fragment_place, getSupportFragmentManager().getFragment(savedInstanceState, "fragment"), null); 
}
@Override
public void onConfigurationChanged (Configuration newConfig){
Log.i("hello", "Config");
super.onConfigurationChanged(newConfig); 
}
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
//MenuItem menuitem1 = menu.findItem(R.id.menuitem1);
//menuitem1.setVisible(false);
menu.getItem(1).setVisible(false);
menu.getItem(0).setVisible(false);
return true;
}
protected class MyTabsListener implements TabListener{
Fragment fragment;
public MyTabsListener(Fragment fragment){
this.fragment = fragment;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {           
if (myTabPosition < 0){
//ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);  
}else{
if (myTabPosition >  tab.getPosition()){
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);   
}else{
ft.setCustomAnimations(R.anim.slide_out_left, R.anim.slide_out_right);  
}
}   
myTabPosition = tab.getPosition();
ft.replace(R.id.fragment_place, fragment, null);    
//ft.commit();
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
//TODO Auto-generated method stub
ft.remove(fragment);
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
//TODO Auto-generated method stub
}
}

OriginalL'auteur Junnel Gallemaso | 2012-09-20