In meiner Anwendung wird die ausgewählte Registerkarte in der Aktionsleiste auf die erste gesetzt, wenn die Ausrichtung geändert wird, ich möchte es auf der ausgewählten Registerkarte bleiben, und nicht auf die erste Reiter in line ...Bleiben Sie auf der aktuellen Registerkarte nach der Änderung der Ausrichtung Actionbar Android
5
A
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);
}
}
-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
- 1. Registerkarte Inhalt bleibt sichtbar nach dem Ändern der Registerkarte nach der Änderung der Orientierung
- 2. Tabbedpanel - bleiben Sie auf der aktuellen Registerkarte, aber ändern Inhalt der Registerkarte
- 3. Öffnen Sie eine neue Registerkarte mit Javascript, aber bleiben Sie auf der aktuellen Registerkarte mit Javascript
- 4. Bleiben Sie auf der aktuellen Seite nach dem POST
- 5. Android Reverse Shared Element Übergang auf der Rückseite nach der Änderung der Ausrichtung?
- 6. android locale Änderung in der Ausrichtung ändern
- 7. TabHost die vorherige Registerkarte nach einer Änderung der Registerkarte
- 8. android Änderung Ausrichtung programmatisch
- 9. Aktionsmode nach der Änderung der Orientierung wiederherstellen
- 10. Android-Aktivität-Reset nach der Aufnahme (Ausrichtung?)
- 11. iOS8 nicht in der Lage, das modale Formularblatt nach der Änderung der Ausrichtung neu zu sortieren
- 12. Formular senden sollte auf der gleichen Registerkarte bleiben
- 13. Aktualisieren der Registerkarte "Android"
- 14. bleiben Klasse nach der Aktualisierung
- 15. Registerkarte XPCOM auf der Registerkarte
- 16. Android: ActionBar wie der Aktien-Browser
- 17. Rotate UIButton auf Änderung der Orientierung
- 18. So stylen Sie ActionBar, Registerkarte Hintergrund auf ausgewählten Registerkarte
- 19. showSoftInput funktioniert nicht nach der Änderung der Orientierung
- 20. Rechte Ausrichtung der Registerkarte (Wenn Sprache Arabisch ist)
- 21. MDI: Name der Datei auf der Registerkarte
- 22. Dynamische Änderung der Android-Sprache
- 23. Wie wird das Fragmentfragment beibehalten, das nach der Änderung der Ausrichtung das Video wiedergibt?
- 24. Android Studio-Vorschaubereich, der ActionBar nicht darstellt?
- 25. ActionBar Sherlock Tabs auf der Unterseite
- 26. Android, wie Fragmente auf der Registerkarte ändern zu stoppen
- 27. Entfernen Sie die Zeile unter der Registerkarte der Registerkarte Steuerelement
- 28. Bleiben Sie auf dem aktuellen jQuery Tab über Post zurück?
- 29. Anzeigefeld auf der Formularregisterkarte basierend auf der aktuellen Seitenvorlage
- 30. Android gridview ändern Anzahl der Spalten je nach Ausrichtung
perfekte Lösung! –
'getSelectedNavigationIndex()' ist auf API-Ebene 21 veraltet. Was sollte die Alternative zu dieser Funktion sein? – Shnkc
@Shnkc sehe meine Antwort – IHeartAndroid