Autore Topic: Mantenere layout dinamico dopo switch-back ad altra activity  (Letto 761 volte)

Offline taurusjp

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Mantenere layout dinamico dopo switch-back ad altra activity
« il: 21 Agosto 2014, 17:24:10 CEST »
0
Ragazzi ho un problema, sto sviluppando un'applicazione in android, per il calcolo e la verifica delle sollecitazioni di una sezione...ecco tralasciamo i particolari :D LOL :D

Vi basta sapere che ho un'attività principale A che funge da menu, cliccando sul pulsante "INSERIMENTO DATI SEZIONE":

Codice (Java): [Seleziona]
public void but_inserisci_dati(View view)
        {
            Intent cambiafinestra = new Intent(this, MyActivity_inserimento.class);
            startActivity(cambiafinestra);
        }

Mi apre un'activity B (inizialmente vuota - vedi Figura 1), attraverso il pulsante ADD presente nella actionbar, ad ogni click attraverso codice viene creato in dinamica un TableRow all'interno del quale ci sono delle EditText e una TextView. All'interno delle EditText l'utente inserirà dei valori geometrici caratteristici della sezione di calcolo. (vedi Figura 2)

Vi ho allegato le due immagini capire meglio.

Allego anche il codice nel caso serva a capire meglio:

Codice (Java): [Seleziona]
public void aggiungiRiga(MenuItem item)
        {
            TableLayout tlayout = (TableLayout) findViewById(R.id.tlayout);     //CARICA IL TABLELAYOUT ESISTENTE
            TableRow tr = new TableRow(this);                                                       //CREA NUOVA RIGA DEL TABLELAYOUT
            tlayout.addView(tr);                                                                                   //AGGIUNGE LA RIGA AL TABLELAYOUT CARICATO

            //DATO CHE è STATO PRAMUTO L'AGGIUNTA DI UN RIGO, VIENE INCREMENTATO IL NUMERO DI RETTANGOLI
            numero_rettangoli++;

            //INSERISCE IL TESTO RETTANGOLO_iesimo
            TextView etichetta = new TextView(new ContextThemeWrapper(this, R.style.titolo));
            etichetta.setText("R" + numero_rettangoli);
            tr.addView(etichetta);


            //INSERISCE LE CELLE DI INSERIMENTO X-Y (SONO QUATTRO)
            for (int col = 0; col < 5; col++)
                {
                    EditText etext = new EditText(new ContextThemeWrapper(this, R.style.inserimento));
                    etext.setId(numero_rettangoli * 10 + col);
                    tr.addView(etext);
                }
        }

Una volta inseriti i vari valori nelle EditText, l'utente clicca il pulsante SAVE presente nella actionbar e viene riportato al menu principale ossia all'Activity A con il codice seguente:

Codice (Java): [Seleziona]
public void salva_dati(MenuItem item)
        {
            Intent cambiafinestra = new Intent(MyActivity_inserimento.this, MyActivity_menu.class);
            startActivity(cambiafinestra);
        }

Il problema è questo: mettiamo che l'utente si accorga di aver sbagliato ad inputare un valore inserito nell'activity B (inserimento dati sezione)...io mi aspetto che ricliccando sul pulsante "INSERIMENTO DATI SEZIONE" si apra l'activity B nello stato in cui l'avevo lasciata (Figura 2), ossia con i valori inputati, presenti in ogni EditText  quindi con il layout creato in dinamica via codice...questo però non avviene...infatti cliccando sul pulsante del menu che apre l'activity B, mi viene mostrata la pagina vuota come nella figura 1.

Come faccio? Riuscite a darmi una mano?  :'( :'( :'( :'(

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Mantenere layout dinamico dopo switch-back ad altra activity
« Risposta #1 il: 21 Agosto 2014, 17:41:43 CEST »
0
Non ti ri-crea il layout perchè devii essere tu ad occuparti di ri-creare tutte le TableRow che avevi precedentemente inserito.

Comunque, se mi posso permettere un consiglio, io cambierei approccio. Al posto di creare layout dinamici a mano, io fare una activity B composta da due sezioni, una superiore e una inferiore. La sezione superiore contiene una fila di EditText di un elemento, ed un Button per salvarla. Nella sezione inferiore metti una ListView che conterrà tutti gli elementi che hai inserito. Quando clicchi su salva, viene aggiunta una riga alla ListView. Quando clicchi su un elemento della ListView, ti vengono popolate le EditText con i dati di quell'elemento, che puoi così modificare o cancellare. Chiaramente, quando dalla prima activity tornerai in questa activity di inserimento, con una ListView appoggiata alla base dati dell'applicazione, vedrai tutti gli elementi fin'ora inseriti.

Attenzione: puoi ottenere lo stesso identico comportamento con il tuo approccio, devi però occuparti "a mano" di ricostruire tutto il layout dinamico ogni volta che ri-crei l'activity B, andando a vedere se ci sono già elementi nella base dati.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline tonno16

  • Utente storico
  • *****
  • Post: 1231
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Mantenere layout dinamico dopo switch-back ad altra activity
« Risposta #2 il: 21 Agosto 2014, 17:44:38 CEST »
0
Intendi che se vuota la edittext si stringe?

Usi un attributo minHeight.
Oppure metti un text-hint.
Oppure fai un check per i valori non inseriti.
Non ho mai usato table layout. Preferisco linear layout contate nati con larghezza wrap e giocarmela sul layout weight

Offline taurusjp

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:Mantenere layout dinamico dopo switch-back ad altra activity
« Risposta #3 il: 21 Agosto 2014, 17:56:49 CEST »
0
Chiaramente, quando dalla prima activity tornerai in questa activity di inserimento, con una ListView appoggiata alla base dati dell'applicazione, vedrai tutti gli elementi fin'ora inseriti.

@bradipao - Ti ringrazio per la celere risposta, mi sono immaginato l'activity come l'hai proposta te e mi piace l'idea, la implementerò! Grazie per il suggerimento, e sentiti libero di suggerirmi o criticarmi, siamo qua per questo. Una cosa però: nella frase che ho riportato, hai parlato di "base dati" stai dicendo che devo collegarla ad un database?! Non posso lavorare con semplici array? Intanto una volta calcolata la sezione non mi interessa che me la tenga in memoria.


@tonno16 - no no, non è quello il problema...pensavo (a questo punto, mi illudevo) che il sistema android quando passavo ad un'altra activity mi salvasse completamente lo stato dell'activity da cui stavo uscendo...infatti se invece di premere il button per andare all'activity B premo il pulsante di sistema BACK, vedo l'activity B come l'avevo lasciata, ossia con i dati inseriti, vedi Figura 2.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1231
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Mantenere layout dinamico dopo switch-back ad altra activity
« Risposta #4 il: 21 Agosto 2014, 18:05:25 CEST »
0
Se da a vai a b e poi ritorni ad a a meno che non fai l'override di onResume () la tua A è come lai lasciata prima.

Io ho solo capito che devi avviare B per compilare un form. A sto punto ti conviene studiati onActivityResult().

Se su android ti interessa mantenere in memoria uno o più variabili che stanno a cavallo di 2 activity e che una volta usati non servono più....allora usa usa i put extra.
Es: intentA.putExtra("chiave",perimetro);
stsrtActivity(intentA).

Oppure crei un piccolo DB.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Mantenere layout dinamico dopo switch-back ad altra activity
« Risposta #5 il: 21 Agosto 2014, 18:29:39 CEST »
0
@bradipao - Ti ringrazio per la celere risposta, mi sono immaginato l'activity come l'hai proposta te e mi piace l'idea, la implementerò! Grazie per il suggerimento, e sentiti libero di suggerirmi o criticarmi, siamo qua per questo. Una cosa però: nella frase che ho riportato, hai parlato di "base dati" stai dicendo che devo collegarla ad un database?! Non posso lavorare con semplici array? Intanto una volta calcolata la sezione non mi interessa che me la tenga in memoria.

Ho parlato di base dati in generale perchè potresti voler usare qualsiasi cosa, un database da decine di megabyte o un semplice array. In entrambi i casi è relativamente semplice appoggiarsi ad una ListView.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline taurusjp

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:Mantenere layout dinamico dopo switch-back ad altra activity
« Risposta #6 il: 21 Agosto 2014, 20:28:47 CEST »
0
Se da a vai a b e poi ritorni ad a a meno che non fai l'override di onResume () la tua A è come lai lasciata prima.

Io ho solo capito che devi avviare B per compilare un form. A sto punto ti conviene studiati onActivityResult().

Se su android ti interessa mantenere in memoria uno o più variabili che stanno a cavallo di 2 activity e che una volta usati non servono più....allora usa usa i put extra.
Es: intentA.putExtra("chiave",perimetro);
stsrtActivity(intentA).

Oppure crei un piccolo DB.


@bradipao & @tonno16

Esatto per utilizzare le variabili uso i put extra...per passare i valori da un'activity ad un'altra...ma mi chiedevo se non ci fosse un metodo già costruito per salvare lo stato dell'activity, con stato intendo tutti i form creati in dinamica e i relativi valori. Questo dubbio/domanda nasce proprio perchè il comportamento che servirebbe a me, sarebbe quello che fa il pulsante fisico BACK...infatti se sono in act.B e passo in act.A e poi premo il tasto fisico BACK...non so come ma mi ricarica l'act.B con le relative celle e valori...esattamente come servirebbe a me...però a me servirebbe implementarlo ad un button dell'UI.

Perchè altrimenti se dovessi fare quello che dite voi, è uno smaronamento creare il codice che inserisca le EditText e i relativi valori. Sbaglio qualcosa?

Grazie in anticipo.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1231
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Mantenere layout dinamico dopo switch-back ad altra activity
« Risposta #7 il: 21 Agosto 2014, 20:47:07 CEST »
0
Guardati le shared preference allora.
Se io ho una lista di nomi e se clicco su un nome mi si apre un form in un activity dove devo settare nome cognome e cell e premere conferma allora ripeto...guardati i pending intent e startActivityResult().


Offline taurusjp

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:Mantenere layout dinamico dopo switch-back ad altra activity
« Risposta #8 il: 21 Agosto 2014, 20:51:16 CEST »
0
Guardati le shared preference allora.
Se io ho una lista di nomi e se clicco su un nome mi si apre un form in un activity dove devo settare nome cognome e cell e premere conferma allora ripeto...guardati i pending intent e startActivityResult().

@tonno16 - Ora sono fuori, domani ci guardo e vi faccio sapere! Intanto ti ringrazio :)

Post unito: 22 Agosto 2014, 10:01:38 CEST
Allora:
  • Il pending intent e lo startActivityforResult() non è quello che serve a me
  • SharedPreference non mi va bene xke non può prendermi i double
« Ultima modifica: 22 Agosto 2014, 10:01:38 CEST da taurusjp, Reason: Merged DoublePost »