2013-03-13 6 views
8

Ho visto alcune domande sollevate su questo argomento (per es .: https://github.com/jfeinstein10/SlidingMenu/issues/5) ma sono ancora poco chiare. Spero che qualcuno possa chiarirlo.passare a una nuova attività, invece di frammenti di commutazione, quando jfeinstein10 di SlidingMenu elemento della lista viene cliccato

Contesto:

Vedi https://github.com/jfeinstein10/SlidingMenu

Ho un'applicazione Android che organizza schermi da attività e frammenti (cioè) ogni schermo è un'attività contenente uno o più frammenti. Il nuovo requisito è quello di aggiungere un menu scorrevole (simile a ciò che fornisce questa libreria).

Edizione

Dagli esempi e discussione che il modello giusto sarebbe avere solo 1 PRINCIPALI che poi passa in/out frammenti appartenenti alle diverse schermate. In effetti l'autore menziona nella discussione precedente: "Se dovessi avviare Attività in base alla selezione dell'elenco, non avresti il ​​comportamento in cui scambi le visualizzazioni di cui stai parlando" e anche "Non puoi metti un'Attività nella vista precedente, che non ha molto senso quando pensi a cos'è un'attività. ".

Perché non ha senso? Ovviamente, mi manca il punto qui.

Domanda:

Dato che il mio progetto contiene già molteplici attività (corrispondente ad ogni schermo), è la mia unica opzione, quindi a ri-organizzare il progetto di avere solo 1 PRINCIPALI, al fine di utilizzare questa libreria ? In alternativa, c'è un modo per avviare una nuova attività quando si fa clic su una voce di elenco nel menu scorrevole e si osserva ancora il comportamento del menu scorrevole, [EDIT - aggiunta l'ultima parte per essere più chiara] o in altre parole, su come utilizzare esattamente questa libreria nella mia progettazione di app esistente.

Grazie in anticipo

risposta

4

In primo luogo, non si può avere un Activity all'interno di un altro e le attività sono completamente differenti dalle viste come indicato nel docs:

Un'attività è una sola cosa, focalizzata che l'utente può fare.

Ora, per rispondere alla tua domanda, tutto dipende da come vuoi che si comporti la tua app. Potresti avere le tue attività con il menu scorrevole implementare il onClosedListener e passare all'attività selezionata da lì. Questo ti darà l'animazione di chiudere il menu prima di cambiare attività. Ti darà anche un effetto strano poiché ogni volta che selezioni qualcosa dal tuo menu vedrai l'animazione di una nuova attività che viene in primo piano.

penso che l'approccio migliore sarebbe quello di avere un "obiettivo comune" tra tutte le opzioni del menu di scorrimento. Ad esempio, in uno dei miei progetti devo consentire agli utenti di selezionare tra elenchi di diversi tipi di dati. Quando l'utente seleziona qualcosa dal menu, carico un nuovo frammento di lista nell'angolo destro in cui può scegliere l'oggetto che desidera visualizzare o modificare. Questo è il punto di accesso all'app e anche l'unico posto dove ho un menu scorrevole nella mia app. È praticamente la stessa per ogni app che implementa questo modello di progettazione dell'interfaccia utente. Un'occhiata a Google +, correnti e youtube dove il menu laterale permette di scegliere quali mangimi o contenuti da visualizzare. Una volta che un utente effettua una selezione, basta aprire una nuova attività per l'elemento selezionato (a + palo g, un video, un articolo, un tweet o qualunque cosa sia).

L'app non deve disporre di elenchi di dati diversi o simili per utilizzare il menu scorrevole, ma tenere presente che l'attività con il menu scorrevole deve avere un obiettivo chiaro e mirato rispetto alla sua funzionalità e scopo. Avere un menu scorrevole perché molte altre app ne hanno una è una cattiva scelta, dovresti usarla con un obiettivo specifico. Tieni inoltre presente che l'applicazione del menu scorrevole in qualsiasi punto interferirebbe con la piattaforma navigation pattern e comporterebbe un'esperienza utente non valida poiché non si comporterebbe come le altre app.

+0

Sto seguendo una navigazione. pattern molto simile all'app YouTube - barra di azione, la cui "navigazione in alto" apre il menu scorrevole. Hai menzionato sopra: "... apri una nuova attività per l'oggetto selezionato". La libreria slidingmenu mostra esempi di commutazione di 'frammenti' (non attività) sulla selezione di voci del menu scorrevole. Quando ho provato a cambiare "attività", ho visto lo strano effetto di una nuova attività che si stava facendo avanti, come hai detto. Sfortunatamente la mia domanda (modificata) sopra rimane ancora aperta, su come utilizzare esattamente questa libreria all'interno della mia progettazione di app esistente. –

+0

Presumo che tu abbia un 'MainActivity' di qualche tipo, il punto di ingresso della tua app che funge da router per le altre attività. Basta che l'attività diventi un'attività del menu scorrevole. Carica un frammento per sfogliare ogni diverso tipo di contenuto in base alla voce di menu selezionata. Avrai solo bisogno del frammento di navigazione in 'MainActivity', che sarà sempre sostituito. Apri un'altra attività per gestire i singoli elementi. Poiché hai già un'app funzionante, riutilizzare le attività esistenti per la visualizzazione di ogni tipo di contenuto è un'opzione migliore rispetto alla modifica di tutto per funzionare con una singola attività. – ebarrenechea

+0

ok bene - fammi provare questo. –

2

Non ha senso posizionare un'attività nella vista sopra perché l'attività è il controller principale per la visualizzazione di ciascuna schermata. L'attività mostra anche le visualizzazioni e tiene traccia dei frammenti (che a loro volta sono mini controller, con o senza le proprie viste). Quindi posizionare un'attività nella vista sopra significherebbe che tu inseriresti un'attività in un'attività ... Che è impossibile.

Da quello che posso ricavare dal testo penso che sarebbe opportuno leggere nuovamente la guida per sviluppatori Android su Attività e frammenti (http://developer.android.com/guide/components/activities.html) per comprendere meglio come funziona il concetto di Android.

Ora alla tua domanda:

non mi è chiaro su ciò che si sta cercando di ottenere, ma se si desidera che la vostra applicazione, con menù a comportarsi come, ad esempio, l'applicazione Google+ allora un modo per farlo è quello di implementare una classe base che estende la classe Activity (o qualsiasi attività base utilizzata nel progetto) e lasciare che la base imposti lo SlidingMenu. Quindi potresti semplicemente estendere la tua attività di base in ciascuna delle attività che dovrebbero avere un menu.

Si potrebbe anche farlo nel modo in cui lo si descrive, ma poi si finirebbe con un classico esempio di un oggetto God (http://en.wikipedia.org/wiki/God_object). È un modo pulito per mettere in pratica le tue abilità di giocoleria di Fragment e passare da Fragment invece di avviare nuove attività ha i suoi casi d'uso, ma non lo consiglierei per un progetto con più di alcune visualizzazioni.

+0

Avevo già provato l'approccio che suggerisci sopra (1 attività di base con altri derivanti da questo). Proverò l'approccio suggerito da @ebarrenchea per cambiare i frammenti in base alla voce del menu. Grazie per il tuo consiglio! –

1

Ecco la risposta più vicina al problema che ho avuto - http://www.verious.com/article/polishing-the-sliding-app-menu/. Scorri fino alla fine della pagina per visualizzare l'ultima sezione intitolata "Utilizzo del menu app fly-in tra le attività". Questa è un'opzione se hai molte attività nella tua app esistente e vuoi evitare il ricondizionamento completo. Non ho ancora provato questo, ma ne vale la pena essere a conoscenza.

Problemi correlati