2012-11-21 3 views

risposta

25

Si può effettivamente fare questo molto facilmente utilizzando onSavedInstanceState:

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

quindi includere questo nel metodo onCreate():

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

soluzione perfetta! –

+0

'getSelectedNavigationIndex()' è obsoleto al livello API 21. Quale dovrebbe essere l'alternativa a questa funzione? – Shnkc

+0

@Shnkc vedi la mia risposta – IHeartAndroid

-1

Dal getLastNonConfigurationInstance() è stato deprecato, in FragmentActivity semplicemente ignorare onRetainCustomNonConfigurationInstance() e utilizzare il nuovo getLastCustomNonConfigurationInstance():

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

e recuperare nel vostro onCreate() come questo:

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

Per 21+ con barra degli strumenti di questo funziona per me:

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); 
     } 
    } 
Problemi correlati