Zauważyłem, że podczas korzystaniawypustki Android ActionBar set początkowo wybrany kartę
actionBar.setSelectedNavigationItem(x)
w metodzie onCreate() mojej działalności, przedmiot zakładka na pozycji 0 jest zawsze wybrany, a następnie element tab w pozycji x jest załadowany. Oznacza to, że (od czasu użycia Fragmentów) są wczytywane 2 Fragmenty. Jednym z nich jest niepotrzebna ...
Oto mój kod:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Determine which bundle to use; either the saved instance or a bundle
// that has been passed in through an intent.
Bundle bundle = getIntent().getExtras();
if (bundle == null) {
bundle = savedInstanceState;
}
// Initialize members with bundle or default values.
int position;
if (bundle != null) {
position = bundle.getInt("selected_tab");
} else {
position = 0;
}
// Set the tabs.
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = actionBar
.newTab()
.setText("Tab 1")
.setTabListener(
new TabListener<RendersGridFragment>(this, "1",
RendersGridFragment.class));
actionBar.addTab(tab);
tab = actionBar
.newTab()
.setText("Tab 2")
.setTabListener(
new TabListener<RendersGridFragment>(this, "2",
RendersGridFragment.class));
actionBar.addTab(tab);
tab = actionBar
.newTab()
.setText("Tab 3")
.setTabListener(
new TabListener<RendersGridFragment>(this, "3",
RendersGridFragment.class));
actionBar.addTab(tab);
actionBar.setSelectedNavigationItem(position);
}
Wydaje się, że zakładka na pozycji 0 jest początkowo wybrany domyślnie. Ale, jak widzisz, przekazuję pakiety, aby upewnić się, że ostatnio wybrana karta jest nadal zaznaczona, gdy metoda activity onCreate() jest ponownie uruchamiana.
Na przykład, jeśli ostatnia wybrana zakładka znajduje się w pozycji 2, uruchamiana jest opcja onCreate(), a zakładka na pozycji ma wartość 0, a zakładka w pozycji 2 jest załadowana.
Jak mogę się upewnić, że pasek akcji nie wybierze karty na pozycji 0 jako pierwszej, gdy użyto actionBar.setSelectedNavigationItem (pozycja).
To jest idealne. Pomyślałem, że jest prosta łatka. Dzięki. – mdupls
Działa, ale widzę przejście do ViewPager po utworzeniu aktywności. Czy jest jakiś sposób, jak to wyłączyć? – sealskej
Nie jestem pewien, czy miałem ten sam problem z autorem pytania. W moim przypadku funkcja setSelectedNavigationItem (...) po wywołaniu na Utwórz moją aktywność fragment został utworzony dwa lub więcej razy. Zmiana w tym rozwiązuje mój problem. Dzięki. –