Hey ragazzi Sto lavorando a un'app per Android in cui voglio implementare un gruppo attività per ogni scheda. Ma dal momento che il gruppo di attività è deprecato, devo usare Frammenti. Ho cercato su Google gli ultimi giorni e ho fatto qualche ricerca su quell'argomento, ma ancora non capisco. Il grafico seguente descrive cosa voglio fare. Inoltre vengo direttamente da iOS e ho bisogno di un feedback sulle mie teorie.Gruppo Android frammento vs. attività
Come si può vedere ogni frammento è costituito da una WebView frammento. Quando l'utente fa clic su un collegamento in quel frammento di WebView, la richiesta viene catturata e viene sostituito un nuovo frammento che contiene nuovamente una WebView e carica il collegamento su cui è stato fatto clic nel frammento precedente. A un certo punto l'utente decide di tornare al primo frammento e preme il pulsante indietro.
I frammenti devono uscire dalla pila nell'ordine inverso fino a quando non vede nuovamente il primo. Idealmente ogni frammento dovrebbe salvare la sua istanza, così che quando l'utente torna indietro, WebView non ha bisogno di caricare nuovamente il sito.
Mi sono imbattuto in ActionBar Sherlock che fornisce un esempio sulle schede Frammenti. C'è anche un esempio di una pila di frammenti. Sarebbe ideale combinare questi due esempi, in modo che ogni scheda sia composta da una pila di frammenti.
mie le strutture di codice hanno il seguente aspetto:
mio TabHost Frammento
public class MyActivity extends SherlockFragmentActivity {
static TabHost mTabHost;
static TabManager mTabManager;
public static int THEME = R.style.Theme_Sherlock_Light;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tabs);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabManager = new TabManager(this, mTabHost, R.id.myRealTabContent);
// adding some Fragment Tabs
mTabManager.addTab(mTabHost.newTabSpec(tabNames[i]).setIndicator(tabNames[i]),
FragmentStackSupport.CountingFragment.class, bundle);
if (savedInstanceState != null) {
mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("tab", mTabHost.getCurrentTabTag());
}
// defining the Tab Manager
Come sarebbe lo Stack Frammento per ogni scheda dovrebbe essere simile? Attualmente ho un'attività frammento con un frammento all'interno di ciascuna scheda. Ma non raggiungo la logica di cui ho bisogno.
Ecco il mio codice: (? O ci sono esempi sul web) My Fragment with WebView inside
Sarei contento per un feedback e suggerimenti. Ho anche alcune preoccupazioni sulla memoria: quando l'utente fa clic e fa clic e i clic e la memoria deve contenere ciascun frammento nello stack.
Cheers.
+1 per una domanda ben spiegata. –
hai mai trovato una soluzione solida a questo problema? –