Ho trovato un sacco di questi messaggi in StackOverflow. Come molte altre persone, ho lo stesso problema con i contenuti delle schede che si sovrappongono quando si cambiano le schede. Nessuno dei consigli che ho trovato non ha funzionato con il mio problema.Contenuti della scheda ActionBar sovrapposti
All'avvio dell'applicazione, viene visualizzato correttamente il contenuto della prima scheda. Quando faccio clic sull'altra scheda, i vecchi contenuti rimangono sullo schermo e anche il contenuto dell'altro tab viene aggiunto sullo schermo. Quando si cambiano le schede una seconda volta, tutti i contenuti scompaiono. Le schede di commutazione non funzioneranno più.
Ho seguito il documento dello sviluppatore di Google here.
La mia applicazione ha questo metodo onCreate
.. La classe estende dalla libreria di supporto android.support.v7.app
.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
Tab tab = actionBar.newTab().setText("TAB1").setTabListener(new TabListener<Tab1Class>(this, "tab1", Tab1Class.class));
actionBar.addTab(tab);
tab = actionBar.newTab().setText("TAB2").setTabListener(new TabListener<Tab2Class>(this, "tab2", Tab2Class.class));
actionBar.addTab(tab);
}
La mia classe TabListener
viene copiato dalla pagina ho linkato:
public class TabListener<T extends Fragment> implements ActionBar.TabListener {
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if(mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if(mFragment != null) {
ft.detach(mFragment);
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {}
}
Entrambe le classi che uso come il contenuto delle schede estendono Frammento da android.support.v4.app.Fragment
. Gonfiano i loro layout nei metodi onCreateView
.
Cosa c'è che non va?
Fantastico! Ho affrontato un sacco di problemi perché voglio che l'applicazione funzioni su dispositivi API 10. Spero che le persone abbandonino quei vecchi telefoni e ne acquisiscano di nuovi con Android 4. BTW, sai perché la mia applicazione non ha un titolo quando usi queste schede? O perché il mio menu collassa in questi punti anche io ho Android: showAsAction = "always"? – MikkoP
@MikkoP * sai perché la mia applicazione non ha un titolo quando si usano queste schede?* - questo sta accadendo solo quando usi le schede? E puoi sempre usare il metodo 'actionBar.setTitle()'. * O perché il mio menu collassa in questi punti anche io ho Android: showAsAction = "always"? * - hai voci di menu nel menu di overflow (il popup che appare quando fai clic sull'immagine a 3 punti)? – Luksprog
Succede solo quando uso queste schede. 'actionBar.setTitle()' non cambia nulla, nemmeno 'setTitle()' dall'attività. E sì, queste voci di menu vengono visualizzate nel menu di overflow. Ho postato di nuovo una nuova domanda, quindi se qualcuno risponde, c'è una possibilità migliore che altri possano trovarla e farsi aiutare. http://stackoverflow.com/questions/19660334/menu-collapsing-when-using-actionbar-tabs-for-navigation – MikkoP