2013-01-02 10 views
6

Ho 2 attività: A, B.Layout dell'attività A, ha un gruppo di vista che l'utente modifica il suo contenuto.Nell'attività B, devo mostrare nuovamente quel viewgroup, senza alcuna modifica, deve essere una copia reale di quel viewgroup , quindi testi, colori, dimensioni, ordine (di childs) e ... devono essere uguali. Quindi non posso usare Layout Inflater .È possibile senza creare classi del tipo di childrens di quel viewgroup e modificare le proprietà? Perché se ho più di 2 attività con diversi gruppi di vista, è molto difficile mostrare i gruppi di vista di ciascuna attività nell'ultima attività.Creazione di una copia di una vista?

Inoltre non riesco a rimuovere quei gruppi di vista dai loro genitori.

+1

http://stackoverflow.com/questions/4159211/how-do-i-clone-a-view –

risposta

1

Creare una classe che contiene la configurazione del proprio gruppo di viste. Consenti a questa classe di configurazione di conservare tutte le informazioni relative al tuo ViewGroup. Terrà i testi, i colori le dimensioni l'ordine e tutto l'utente è cambiato. Passa l'oggetto di questa classe dall'attività A all'attività B e, utilizzando questo, riproduci la stessa vista gonfiando lo stesso layout.

Spero che questo aiuti.

E per rispondere alla tua domanda, non c'è altro modo semplice per farlo.

+0

C'è un modo per ottenere tutte le configurazioni di una vista dalla sua istanza? Ad esempio c'è una classe da tenere configurazioni di una vista? –

+0

No. Devi creare le tue classi e dichiarare le variabili che ritieni importanti per riprodurre le viste. – Enigma

4

Non è un modo semplice per farlo. Non puoi spostare la vista tra le attività. Quindi, sono disponibili diverse opzioni:

  • creare una bitmap di viewGroup e spettacolo in a nuova attività (non funziona è voi bisogno copia modificabile)
  • Save State hierarchi di vista nella vecchia attività e ricrearlo in uno nuovo (usare i frammenti rende più facile).
  • non creare nuove attività. Basta cambiare alcune parti dell'interfaccia utente nella vecchia senza toccare il target ViewGroup.
5

Se il loro contenuto sarà lo stesso, non ha senso avere due attività diverse. È possibile modificare dinamicamente il contenuto di una sola attività e il comportamento sarà lo stesso di due attività. Se è davvero necessario, dovrai salvare tutte le informazioni necessarie per ricostruire nuovamente l'attività e passarla all'attività appena creata. Dai uno sguardo allo this.

1

Per il ViewGroup che deve essere condiviso, rifattarlo in un frammento denominato C. Quindi creare Frammenti per le sezioni Attività A e B meno questa porzione condivisa. Quindi, contrai tutti questi frammenti all'interno di una nuova attività contenente (non avrai più bisogno delle attività A e B).

Il frammento A e C sarà la nuova attività A. I frammenti B e C saranno la nuova attività B. Per passare dal primo al secondo, eseguire una FragmentTransaction aggiungendo il frammento B e rimuovendo il frammento A. Ricordarsi di aggiungere questa transazione allo stack posteriore in modo che il pulsante Indietro ti riporti al primo stato.

1

Solo un dubbio generale? perché vorresti andare per due attività, perché non usare due frammenti assegnati alla stessa vista, usa l'attività sottostante per memorizzare tutte le modifiche che si verificano in uno dei frammenti (Visualizza) e quando l'utente passa all'altra vista, basta inviare i parametri per il secondo frammento. In questo modo si emula all'utente che si tratta di due attività ma in realtà sono solo due frammenti controllati da un'unica attività.

Problemi correlati