2012-11-21 12 views

Antwort

25

Sie können tatsächlich tun dies sehr einfach mit onSavedInstanceState:

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    int i = getActionBar().getSelectedNavigationIndex(); 
    outState.putInt("index", i); 
} 

Dann hierfür sind in Ihrem onCreate() -Methode:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
      ... 
    if(savedInstanceState != null) { 
     int index = savedInstanceState.getInt("index"); 
     getActionBar().setSelectedNavigationItem(index); 
    } 
} 
+0

perfekte Lösung! –

+0

'getSelectedNavigationIndex()' ist auf API-Ebene 21 veraltet. Was sollte die Alternative zu dieser Funktion sein? – Shnkc

+0

@Shnkc sehe meine Antwort – IHeartAndroid

-1

Seit getLastNonConfigurationInstance() veraltet ist, in Ihrem FragmentActivity einfach außer Kraft setzen onRetainCustomNonConfigurationInstance() und verwenden die neue getLastCustomNonConfigurationInstance():

@Override 
public Object onRetainCustomNonConfigurationInstance() { 
    return mViewPager.getCurrentItem(); 
} 

und rufen sie sie in Ihrem onCreate() wie folgt aus:

Integer lastTab = (Integer) getLastCustomNonConfigurationInstance(); 
if (lastTab != null) { 
    mViewPager.setCurrentItem(lastTab); 
} 
0

Für 21+ mit Symbolleiste für mich funktioniert:

import android.support.v4.app.FragmentManager; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 

public class MainActivity extends AppCompatActivity { 



    private ViewPager viewPager; 
    private static final String FLAG_CURRENTLY_SELECTED_TAB_INDEX = "currentlySelectedTabIndex"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mylayout); 


     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     ActionBar actionBar = getSupportActionBar(); 
     if (actionBar != null) { 
      actionBar.setHomeAsUpIndicator(R.mipmap.ic_launcher); 
      actionBar.setDisplayHomeAsUpEnabled(true); 
     } 

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     viewPager.setAdapter(getMyCustomAdapter());    

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager);  

     if (savedInstanceState != null) { 
      final int currentlySelectedTabIndex = savedInstanceState.getInt(FLAG_CURRENTLY_SELECTED_TAB_INDEX, -1); 
      if (currentlySelectedTabIndex > -1) { 
       viewPager.setCurrentItem(currentlySelectedTabIndex); 
      } 
     } 

    } 

@Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 

     if (viewPager != null) { 
      int i = viewPager.getCurrentItem(); 
      outState.putInt(FLAG_CURRENTLY_SELECTED_TAB_INDEX, i); 
     } 
    } 
Verwandte Themen