CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 20
Discussione:

Passaggio oggetto a diversi tab

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    21

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Passaggio oggetto a diversi tab

    Ciao a tutti, ho iniziato da poco a programmare x android e spero di non essere OT.

    Ho un activity (A1) con TabHost che carica un mio oggetto da DB, per semplificare diciamo i dati relativi ad una persona, queste informazioni presenti su una classe (Persona) dichiarata in A1 dovrebbero essere passate ai diversi tab per l'edit.

    L'utente tramite i diversi tab può modificare tali info e premendo in un bottone di A1 salvare in un sol colpo tutte le info di persona. Le info di Persona sono distribuite sui diversi tab.

    Qual'è il sistema migliore di organizzare l'activity? Passo la classe Persona da A1 alle activity dei tab con l'Intent? Poi come recupero le diverse info di Persona scritte nei diversi tab per fare il salvataggio?
    Pensavo di tenere le info su un unica istanza della classe Persona di A1 ed aggiornare direttamente li.?
    Se dichiaro Persona come public su A1 poi come arrivo su A1 dai singoli tab?

    Potreste darmi qualche indicazione sulla strada migliore da seguire?
    Grazie

  2.  
  3. #2
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da mpigio Visualizza il messaggio
    Ciao a tutti, ho iniziato da poco a programmare x android e spero di non essere OT.

    Ho un activity (A1) con TabHost che carica un mio oggetto da DB, per semplificare diciamo i dati relativi ad una persona, queste informazioni presenti su una classe (Persona) dichiarata in A1 dovrebbero essere passate ai diversi tab per l'edit.

    L'utente tramite i diversi tab può modificare tali info e premendo in un bottone di A1 salvare in un sol colpo tutte le info di persona. Le info di Persona sono distribuite sui diversi tab.

    Qual'è il sistema migliore di organizzare l'activity? Passo la classe Persona da A1 alle activity dei tab con l'Intent? Poi come recupero le diverse info di Persona scritte nei diversi tab per fare il salvataggio?
    Pensavo di tenere le info su un unica istanza della classe Persona di A1 ed aggiornare direttamente li.?
    Se dichiaro Persona come public su A1 poi come arrivo su A1 dai singoli tab?

    Potreste darmi qualche indicazione sulla strada migliore da seguire?
    Grazie
    Ciao, puoi pensare di creare una classe che estende Application, una cosa di questo tipo..:
    codice:
    class miaClasse extends Application 
    {
            private String stringa;
            
            public String getState()
            {
                     return stringa;
            }
      
            public void setState(String str)
            {
                     stringa= str;
            }
    }
    
    class tuaAct extends Activity 
    {
           @Override
           public void onCreate(Bundle b)
           {
                    miaClasse appo = ((miaClasse)getApplicationContext());
                    String var = appo.getState();
           }
    }
    e metterci dentro tutto quello che tiri giù dal DB..

  4. #3
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    21

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ciao freebong, deduco che derivandola da application non la devo instanziare e ce l'ho sempre a disposizione, ci possono essere problemi di efficienza?
    Al momento per passarmi la classe usavo gli intent in questo modo:

    codice:
    public class Person implements Serializable {
    	public int _ID;
    	public String name;
            ...
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
            ...
            p = PersonHelper.getPerson(db, iPersonId);
            ...
            intent.putExtra(pkg+".myPerson", p); 
            ...
    }
    Con il sistema che suggerisci non sarebbe più necessario, mi viene il dubbio che stia seguendo la strada sbagliata, possibile che sia l'unico a dover usare una strada diversa dagli intent? Oppure ho capito male.

    Grazie

  5. #4
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da mpigio
    Ciao freebong, deduco che derivandola da application non la devo instanziare e ce l'ho sempre a disposizione, ci possono essere problemi di efficienza?
    Al momento per passarmi la classe usavo gli intent in questo modo:


    public class Person implements Serializable {
    public int _ID;
    public String name;
    ...
    }

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    ...
    p = PersonHelper.getPerson(db, iPersonId);
    ...
    intent.putExtra(pkg+".myPerson", p);
    ...
    }


    Con il sistema che suggerisci non sarebbe più necessario, mi viene il dubbio che stia seguendo la strada sbagliata, possibile che sia l'unico a dover usare una strada diversa dagli intent? Oppure ho capito male.

    Grazie

    Bè puoi farlo in entrambe le maniere.. era solo una alternativa possibile oltre a quella scontata degli intent.. tu meglio di tutti sai cosa vuoi che faccia l app e come sarebbe meglio gestire determinati aspetti.. io ti suggerivo solo qualcosa di diverso dagli intent, che per inciso puoi usare tranquillamente


    Inviato dal mio HTC Desire usando Androidiani App

  6. #5
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    21

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ciao freebong, finalmente ho avuto un po' di tempo per provare la tua soluzione ma nel debug quando arrivo qui:
    miaClasse appo = ((miaClasse)getApplicationContext());
    ricevo un eccezione con questo messaggio: android.app.Application
    che non mi dice molto e cmq l'app sembra procedere senza problemi, come faccio a scoprire come mai si genera l'eccezione?

    E una seconda domanda, come posso recuperare con la tecnica che mi hai suggerito una seconda classe?
    Nella chiamata: getApplicationContext() non si usa nessun parametro se non il casting a monte!

    Questa la logica nel mio codice:
    codice:
    class miaClasse extends Application 
    {
            private String stringa;
            
            public String getState()
            {
                     return stringa;
            }
      
            public void setState(String str)
            {
                     stringa= str;
            }
    }
    
    class miaActConDiversiTab extends Activity 
    {
           @Override
           public void onCreate(Bundle b)
           {
                    miaClasse appo = DbHelper.getPerson(db, iPersonId);;
           }
    }
    
    class miaActDelSingoloTab extends Activity 
    {
           @Override
           public void onCreate(Bundle b)
           {
                    miaClasse appo = ((miaClasse)getApplicationContext());
                    String var = appo.getState();
           }
    }

  7. #6
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da mpigio
    Ciao freebong, finalmente ho avuto un po' di tempo per provare la tua soluzione ma nel debug quando arrivo qui:
    miaClasse appo = ((miaClasse)getApplicationContext());
    ricevo un eccezione con questo messaggio: android.app.Application
    che non mi dice molto e cmq l'app sembra procedere senza problemi, come faccio a scoprire come mai si genera l'eccezione?

    E una seconda domanda, come posso recuperare con la tecnica che mi hai suggerito una seconda classe?
    Nella chiamata: getApplicationContext() non si usa nessun parametro se non il casting a monte!

    Questa la logica nel mio codice:

    class miaClasse extends Application
    {
    private String stringa;

    public String getState()
    {
    return stringa;
    }

    public void setState(String str)
    {
    stringa= str;
    }
    }

    class miaActConDiversiTab extends Activity
    {
    @Override
    public void onCreate(Bundle b)
    {
    miaClasse appo = DbHelper.getPerson(db, iPersonId);;
    }
    }

    class miaActDelSingoloTab extends Activity
    {
    @Override
    public void onCreate(Bundle b)
    {
    miaClasse appo = ((miaClasse)getApplicationContext());
    String var = appo.getState();
    }
    }

    Ciai scusa se rispondo brevemente ma sn da telefono.
    Per l eccezione prova a gestirla (guarda in rete come) e a visualizzare il messaggio dell eccezione, il logcat da errori?
    Per la seconda domanda non ho provato personalmente ma immagino basti creare una seconda classe che estende application.


    Inviato dal mio HTC Desire usando Androidiani App

  8. Il seguente Utente ha ringraziato freebong per il post:

    mpigio (07-05-12)

  9. #7
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    21

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ciao, il messaggio che ho postato è quello che ho fatto mostrare sul logcat grazie al try catch, solo che non è abbastanza esplicativo, come posso capirne di più sulla causa dell'eccezione?

    Per la seconda domanda, in realtà era una curiosità perchè non capisco come possa tornarmi il giusto oggetto se non passo alcun parametro, si fa solo un casting...

    Aggiungo una domanda: come recupero la classe che estende Application dall'activity che contiene i diversi TabHost (A1)?
    Come dicevo ho un bottone salva su A1 e dovrei ripescare i dati dai diversi oggetti (TextView, EditText, ToggleButton...) nel momento in cui faccio tap. Il problema è proprio qui perchè altrimenti avrei potuto usare anche gli intent.

    Grazie
    Ultima modifica di mpigio; 08-05-12 alle 18:13

  10. #8
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da mpigio Visualizza il messaggio
    Ciao, il messaggio che ho postato è quello che ho fatto mostrare sul logcat grazie al try catch, solo che non è abbastanza esplicativo, come posso capirne di più sulla causa dell'eccezione?

    Per la seconda domanda, in realtà era una curiosità perchè non capisco come possa tornarmi il giusto oggetto se non passo alcun parametro, si fa solo un casting...

    Aggiungo una domanda: come recupero la classe che estende Application dall'activity che contiene i diversi TabHost (A1)?
    Come dicevo ho un bottone salva su A1 e dovrei ripescare i dati dai diversi oggetti (TextView, EditText, ToggleButton...) nel momento in cui faccio tap. Il problema è proprio qui perchè altrimenti avrei potuto usare anche gli intent.

    Grazie
    ciao allora parti dal presupposto che non ho mai provato ad implemetare queste classi, comunque in linea teorica credo che:
    1) per l'eccezzione hai aggiunto nel manifest <application android:name=".miaClasse">?? (ma non hai nessun altro messaggio nell'eccezione??)
    2)credo che il casting e dichiarare una variabile di tipo (miaClasse) basti ad indentificare a quale classe fa riferimento un istanza.
    3)all'ultima domanda o provi a postare il codice completo o se no dovro provare a casa a fare una cosa simile e ti diro'!!
    ciao

  11. #9
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    21

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    ciao
    1) non ho aggiunto nessuna classe al manifest, ne ho diverse, come potrei indicarle tutte su application name?
    3) Mi vengono in mente due vie:
    a) All'evento onChange delle EditText, Toggle... aggiorno sempre la classe che estende application con i nuovi valori, così quando si fa tap su Salva ho già la classe aggiornata, non credo sia la soluzione + efficiente.
    b) Al tap su salva, chiamo un metodo pubblico delle activity dei singoli tab, anche se non saprei come recuperare le singole activity.

  12. #10
    Senior Droid L'avatar di freebong


    Registrato dal
    Apr 2011
    Messaggi
    379

    Ringraziamenti
    13
    Ringraziato 28 volte in 27 Posts
    Predefinito

    Quote Originariamente inviato da mpigio
    ciao
    1) non ho aggiunto nessuna classe al manifest, ne ho diverse, come potrei indicarle tutte su application name?
    3) Mi vengono in mente due vie:
    a) All'evento onChange delle EditText, Toggle... aggiorno sempre la classe che estende application con i nuovi valori, così quando si fa tap su Salva ho già la classe aggiornata, non credo sia la soluzione + efficiente.
    b) Al tap su salva, chiamo un metodo pubblico delle activity dei singoli tab, anche se non saprei come recuperare le singole activity.

    Guarda che la classe che estende application è visibile a tutte le activity..
    Forse un esempio in codice chiaribebbe un Po la situazione.. appena ho dieci minuti provo e poi Lo posto.


    Inviato dal mio HTC Desire usando Androidiani App

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy