Birden Parçası Düşen bir Etkinliği açıksa için onSaveInstanceState() Metodu tasarruf edin. Ayrıca parçalara da bağlı olan sekmelerim için actionbarSherlock kullanıyorum.Güncel Parçası alın ve Ekran Oryantasyon
My Problem bu benim aktiviteyi yeniden yüzden, benim etkinlik tekrar çağrılır (yani yatay/tersi yönde portresi) ekranını döndürmek için gidiyorum zamandır.
benim faaliyeti yeniden ama sadece döndürme önce gösterildi geçerli parçasını geri istemiyorlar. LÜTFEN sorunu çözmediğinden, sadece basit bir hack gibi android:configChanges="orientation|keyboardHidden"
yanıt vermeyin. Benim çözüm OnsaveInstanceState ve onRestoreInstanceState Yöntemleri oldu ama ben sadece benim sorunumla nasıl kullanacağımı bilmiyorum. Lütfen bana yardım et. Herhangi bir cevap çok takdir edilmektedir.
KODU: Onları tekrar katmayan eğer
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
}
}
Parçamın durumunu nasıl kaydederim? ; Yerine 'actionBar.addTab (doğru TABD, 0,) arasında –
' bunu: 'halinde (savedInstanceState == null) {actionBar.addTab (gerçek TABD, 0,)} else {actionBar.addTab (TABD, 0, yanlış); } 'Bu mevcut parçanın geri yüklenmesine izin vermelidir. Sekme göstergeniz kapalı olabilir, dolayısıyla hangisinin belirtileceğini ayarlamanız gerekir. – MCeley