Nella mia applicazione la scheda selezionata nella barra delle azioni è impostata sulla prima quando l'orientamento è cambiato, mi piacerebbe che rimanesse nella scheda selezionata e non salissi prima scheda in linea ...Rimani sulla scheda corrente dopo la modifica dell'orientamento Barra delle applicazioni Android
5
A
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);
}
}
-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:
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
- 1. C# - Modifica dell'icona della barra delle applicazioni
- 2. Rimani in una scheda corrente dopo aver inviato un modulo utilizzando jQuery
- 3. Forza form modale da visualizzare sulla barra delle applicazioni
- 4. Come bloccare sulla barra delle applicazioni con PowerShell
- 5. Scrittura di testo sulla barra delle applicazioni invece di un'icona
- 6. Modifica posizione della barra delle azioni Android
- 7. Come modificare l'ordine dei pulsanti sulla barra delle applicazioni?
- 8. Coprire la barra delle applicazioni con VB
- 9. Modifica l'icona della barra delle applicazioni del mio programma .jar
- 10. iPhone Objective-C: modifica del titolo dell'elemento sulla barra delle schede nella barra delle schede creata usando IB?
- 11. Aggiungere un controller di barra delle schede al livello di flusso delle applicazioni corrente
- 12. Applicazione nella barra delle applicazioni
- 13. Electron.js Come minimizzare/chiudere la finestra sulla barra delle applicazioni e ripristinare la finestra dal vassoio?
- 14. Notepad ++ scorrimento pagina sulla scheda di modifica
- 15. Process.Start ("explorer.exe"); non restituirà la barra delle applicazioni
- 16. Impostazione di un'icona diversa sulla barra delle applicazioni sull'icona visualizzata nella barra del titolo (C#)?
- 17. Cambia barra delle applicazioni buttonicon a runtime
- 18. Più finestre, ma anche più elementi sulla barra delle attività
- 19. Menu a discesa sulla barra delle azioni
- 20. Come associo la mia applicazione a un programma aggiunto sulla barra delle applicazioni di Windows 7?
- 21. Pulsante "Indietro" sulla barra delle azioni - Android. Come tornare "indietro"?
- 22. Come nascondere un JFrame nella barra delle applicazioni della barra delle applicazioni
- 23. Come spostare la barra delle applicazioni di Windows (due)
- 24. Cambia l'icona sulla barra delle applicazioni di Windows 7 per un'applicazione appuntata
- 25. Nascondi barra delle applicazioni in Windows 8
- 26. JFrame rimuovere barra delle applicazioni Icona
- 27. Qt Nascondi barra delle applicazioni Elemento
- 28. Altezza della barra delle azioni di modifica su Android JellyBean
- 29. Nascondi l'app PyQt dalla barra delle applicazioni
- 30. Honeycomb Android - Modifica dello stile della barra delle azioni
soluzione perfetta! –
'getSelectedNavigationIndex()' è obsoleto al livello API 21. Quale dovrebbe essere l'alternativa a questa funzione? – Shnkc
@Shnkc vedi la mia risposta – IHeartAndroid