Domanda

Quale ritieni sia il modo migliore di eseguire una procedura guidata come un'applicazione (l'utente può spostarsi tra le schermate con un pulsante Avanti e Indietro e ogni schermata deve salvare alcuni dati di stato) nella piattaforma Android.

Posso principalmente pensare in due modi:

  1. Avere un'attività + vista per ogni schermata e poi faccio passare lo schermo chiamando ogni attività. Ciò che rende bello questo è che posso usare il pulsante Indietro di sistema come gestore della schiena e non devo occuparmene da solo, inoltre ogni attività salverà il suo stato.

  2. Avere un'attività e molte visualizzazioni e ciò che cambio visualizzazioni in ogni schermata cambia, questo mi aiuta a riutilizzare più codice, ma rende gli stati di salvataggio un casino.

Cosa ne pensi? Qual è il modo migliore per farlo su Android?

È stato utile?

Soluzione

Suggerisco di andare con 2 in quanto si adatta all'obiettivo di attività e viste. Il salvataggio dello stato in questo caso è semplice: se si utilizza il modello MVC, è possibile semplicemente avere un oggetto modello che viene passato alle viste. Ogni vista avrà parti del modello che può leggere / scrivere. Non importa dove ti trovi, il modello dovrebbe sempre avere lo stato corrente. Se vieni eliminato, salva il modello. Il ripristino funziona automaticamente poiché hai già letto il modello quando mostri ciascuna pagina.

Altri suggerimenti

Ho sviluppato una libreria Android leggera, che si basa sul ViewPager di Android che può essere utilizzato per la creazione di attività simili a procedure guidate. Dai un'occhiata: WizarDroid .

Sono andato con il primo approccio in quanto sembra più naturale. Un'altra app utilizza ViewFlipper per cambiare visualizzazione ma è tutt'altro che una procedura guidata.

Penso che 2 sia migliore. Inserisci ogni " pagina " in una vista e quindi solo alternare tra mostrare e nasconderli. Rende banale fare belle transizioni. Quale stato stai pensando di mantenere? L'unico che non funziona automaticamente sarebbe focus e penso che probabilmente vorrai ripristinarlo ogni volta che cambi pagina. È anche banale recuperare se pensi che sia il comportamento giusto per la tua app.

Con 1 puoi riutilizzare quasi tutto il tuo codice (basta definire la tua classe WizardBase) ma penso che le attività siano molto più lente da avviare (e richiedono più memoria) rispetto al passaggio da una vista all'altra.

9 anni fa questo era ovviamente un bollitore di pesce molto diverso - ma penso che il modo migliore per farlo ora sia con Fragments.

Avere un frammento per ogni 'pagina' nella procedura guidata, permettendogli di gestire il proprio ciclo di vita e il proprio stato.

Cambia pagina da ogni frammento con Fragment.getFragmentManager ( ) - questo restituisce il FragmentManager dall'attività principale, consentendo al frammento di sostituirsi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top