Autore Topic: Passare da un layout all'altro mantendo i dati  (Letto 943 volte)

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Passare da un layout all'altro mantendo i dati
« il: 21 Luglio 2011, 11:54:38 CEST »
0
Ciao, come ho detto nella presentazione sto iniziando ora a programmare in android, quindi perdonatemi se sono un pò ignorante  :-)

Comunque il mio problema è questo:
devo passare da un layout ad un'altro, e i dati inseriti nell'EditText non li vorrei perder, ad esempio se torno dal 2° layout al 1°, vorrei riavere ancora i dati inseriti precedentemente.
Ho provato ad usare intent ma non capisco come  :'(

help me please!!

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Passare da un layout all'altro mantendo i dati
« Risposta #1 il: 21 Luglio 2011, 12:00:41 CEST »
0
in quale contesto stai facendo questa cosa?
stai cambiando layout all'interno di una stessa activity oppure stai cambiando activity, per cui hai un altro layout?

in ogni caso devi prenderti i dati di uno e fare in modo che l'altro li memorizzi.
nel primo caso puoi usare variabili locali, nel secondo caso potresti passarli tramite un intent.

l'intent viene utilizzato come contenitore.
in un'activity metti i dati che ti interessano con i vari putExtra, mentre nell'altra acvitiy che tu avrai richiamato prenderai l'intent che ti arriva e da lì, tramite il bundle extras, prendi ciò che gli hai passato prima.
Funziona come una specie di hashmap, in cui i nomi dei campi che passi sono le chiavi della mappa stessa.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Passare da un layout all'altro mantendo i dati
« Risposta #2 il: 21 Luglio 2011, 13:12:32 CEST »
0
Allora: io passo all'activity la EditText così:
 
Codice (Java): [Seleziona]
        public void prova(View view) {
                TextView txt = (TextView)this.findViewById(R.id.txtComments);

facendolo nella stessa activty, come devo dichiarare la variabile, di che tipo?

e per riinserire il valore, va bene fare così:
Codice (Java): [Seleziona]
 TextView txt = (TextView)this.findViewById(R.id.txtComments);
        txt.setText(var);

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Passare da un layout all'altro mantendo i dati
« Risposta #3 il: 21 Luglio 2011, 13:21:24 CEST »
0
Da qualunque punto dell'activity, facendo un findViewById prendi la TextView. Sarebbe meglio che tu la prendessi una volta sola, creando una variabile di classe alla quale assegni l'oggetto, una volta preso.

In qualunque punto dell'Activity, facendo txt.gettext().toString() prendi il contenuto della textview. (e' una stringa)

Se, a questo punto, cambi layout (all'interno della stessa activity) puoi settare il valore di un altro TextView: prendi l'oggetto con findViewById(r.id.nuovoTextView) e setti il contenuto con setText
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Passare da un layout all'altro mantendo i dati
« Risposta #4 il: 21 Luglio 2011, 13:22:57 CEST »
0
Sono riuscito siiii  :D grazie

ora devo capire come fare tra activity diverse..

io creo la mi intent nella 1° activity, ma che parametri devo mettere qui?   
Codice (Java): [Seleziona]
 Intent myIntent = new Intent(view.getContext(), class);
e una volta creata come faccio a riprenderla nella seconda activity?

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Passare da un layout all'altro mantendo i dati
« Risposta #5 il: 21 Luglio 2011, 13:36:19 CEST »
0
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Passare da un layout all'altro mantendo i dati
« Risposta #6 il: 21 Luglio 2011, 14:56:47 CEST »
0
alllora io ho fatto così:

richiamo tramite onclick di un bottone il metodo prova, ma quando eseguo mi dice che l'applicazione si è ferma inaspettatamente, come mai?

Codice (Java): [Seleziona]
public class ImparareActivity extends Activity {       
String var;
@Override  
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
    }
       
        public void prova(View view) {
                TextView txt = (TextView)this.findViewById(R.id.txtComments);
       
       
                Toast toast=Toast.makeText(this, txt.getText(), 2000);
        toast.setGravity(Gravity.TOP, -30, 50);
        toast.show();
        var=txt.getText().toString();
       
        Intent intent=new Intent(getApplicationContext(), dati.class);
        String pkg=getPackageName();
        intent.putExtra(pkg+".myString", var);
       
        startActivity(intent);
       
        }
}

poi nella seconda activity:
Codice (Java): [Seleziona]
public class dati extends Activity {
         @Override
     protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.altrolayout);
             
             Intent intent=getIntent();
             
             String pkg=getPackageName();
             
             String txt=intent.getStringExtra(pkg+".myString");  
             
                                     
             
             EditText text=(EditText)findViewById(R.id.txtComments);        
             text.append("myString:"+txt+"\n");
     }

}

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Passare da un layout all'altro mantendo i dati
« Risposta #7 il: 21 Luglio 2011, 15:13:34 CEST »
0
L'evento click l'hai gestito da xml ?
Secondo il mio parere c'è più di un problema.
Questi sono i miei consigli:

1)Usa logcat per trappare gli errori , ecco il link su come usare logcat [Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

2)Inizialmente usa solo i componenti che ti servono, ad esempio Toast potresti evitarlo.

3)L'assegnazione degli oggetti (presenti nel xml)la farei nell'evento oncreate dell'activity es:
Codice: [Seleziona]
public void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TextView txt = (TextView)this.findViewById(R.id.txtComments);

 
}


Saluti
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Passare da un layout all'altro mantendo i dati
« Risposta #8 il: 21 Luglio 2011, 15:16:09 CEST »
0
richiamo tramite onclick di un bottone il metodo prova, ma quando eseguo mi dice che l'applicazione si è ferma inaspettatamente, come mai?

[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Passare da un layout all'altro mantendo i dati
« Risposta #9 il: 21 Luglio 2011, 15:27:23 CEST »
0
ho allegato il log, la parte in cui mi da errore, non capisco cosa c'è di sbagliato..


 comunque l'assegnazione degli oggetti (presenti nel xml)se la faccio nell'oncreate, non ho più nel metodo prova..

Offline Teo

  • Utente junior
  • **
  • Post: 98
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid E / Xoom2
  • Sistema operativo:
    Mac OS X 10.8
Re:Passare da un layout all'altro mantendo i dati
« Risposta #10 il: 21 Luglio 2011, 16:57:10 CEST »
0
Sono riuscito!!!

Sono un co....ne, avevo cancellato per sbaglio il metodo che richiamavo  :D

GRAZIE a tutti per l'aiuto dato..

PS non pensato che non vi diturbi con altre domande però  :-P :-P  ;-)