Ho creato un'app con un ActionBar
e due schede di seguito. Tutto funziona correttamente se il dispositivo/emulatore non è ruotato. Se ruotato, lo stato della scheda passa automaticamente a tab1 (normale, perché viene chiamato onCreate
) ma il contenuto non viene modificato. Se seleziono una scheda nel nuovo orientamento, viene chiamato il metododal numero selezionato Fragment
ma la vista non viene aggiornata (resta sempre la stessa). Qualche consiglio?ActionBar Tab con frammenti su rotazione
Il codice.
attività principale:
ActionBar actionbar = getActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab ATab = actionbar.newTab().setText(R.string.player);
ActionBar.Tab BTab = actionbar.newTab().setText(R.string.stations);
Fragment AFragment = new AFragment();
Fragment BFragment = new BFragment();
PlayerTab.setTabListener(new MyTabsListener(AFragment));
StationsTab.setTabListener(new MyTabsListener(BFragment));
actionbar.addTab(ATab);
actionbar.addTab(BTab);
Con schede identiche che visualizzano un semplice TextView. La semplice vista del testo dice quale scheda è selezionata.
Frammenti:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.a, container, false);
}
La disposizione frammento, di cui sopra, contiene solo TextView con testo hardcoded. (Solo a scopo di test)
Il layout Principale è simile a questo.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</LinearLayout>
</LinearLayout>
Vuoi onCreate() da chiamare quando viene ruotato il dispositivo? – nhaarman
Sì e No, in questo esempio va bene. Nell'app finale, anche Ok, ma penso che non sia il modo migliore. Vuoi usare 'android: configChanges =" keyboardHidden | orientation "'? Ho letto su di esso e qualcuno ha detto qualcosa su perdite di memoria e l'ultima spiaggia. È giusto? C'è un modo migliore? – Leandros