Autore Topic: ritornare ad un'activity precedentemente visualizzata  (Letto 3752 volte)

Offline Maria

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    Mac OS X
ritornare ad un'activity precedentemente visualizzata
« il: 18 Marzo 2012, 17:06:32 CET »
0
Salve, sono nuova del forum.
Ecco il mio problema:

Date 3 activity, dalla 1 vado alla 2, dalla 2 alla 3, se voglio ritornare dalla 3 alla 1 senza dover ricreare l'activity 1, come devo fare?

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #1 il: 19 Marzo 2012, 18:38:13 CET »
0
Per terminare l'activity corrente bisogna premere il tasto back sulla telefono oppure richiamare il metodo finish da codice.
Se tu nel tornare indietro vuoi saltare la visualizzazione della seconda activity devi fare l'override in questa activity del metodo onActivityResult dove puoi inserire all'interno il metodo finish che farà terminare automaticamente la activity stessa facendoti ritornare alla prima

Offline Maria

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    Mac OS X
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #2 il: 19 Marzo 2012, 18:55:24 CET »
0
Mi potresti fare un esempio con il codice? ho provato a fare come dici ma non ci sono riuscita. Grazie mille

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #3 il: 19 Marzo 2012, 18:56:35 CET »
0
Posta il tuo che lo correggiamo

Offline Maria

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    Mac OS X
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #4 il: 19 Marzo 2012, 19:00:45 CET »
0
Il problema è che l'ho cancellato perchè non funzionava, oggi ho dovuto far vedere al mio prof a che punto ero. Momentaneamente avevo risolto creando una nuova activity.

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #5 il: 19 Marzo 2012, 21:20:18 CET »
0
Ti ho scritto un esempio molto velocemente... Probabilmente ci sono delle incorrettezze qua e là, ma il succo è quello.

Codice (Java): [Seleziona]
public class Activity1 extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.act1);

                Button button1 = (Button) findViewById(R.id.butt1);
                button1.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
Intent tuoIntent = new Intent(this, Activity2.class);
                                startActivity(tuoIntent);
                        }
                });

}
}

Codice (Java): [Seleziona]
public class Activity2 extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.act2);

                Button button2 = (Button) findViewById(R.id.butt2);
                button2.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
Intent tuoIntent2 = new Intent(this, Activity3.class);
                                startActivity(tuoIntent2);
                        }
                });

}

        @Override
        protected void onResume(){
                super.onResume();
                //se non ti interessa la seconda la chiudi subito appena torni indietro dalla activity 3
               finish();
        }

}

Codice (Java): [Seleziona]
public class Activity3 extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.act3);

                Button button3 = (Button) findViewById(R.id.butt3);
                button3.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                finish();
                        }
                });

}
}


Spero di averti chiarito le idee ^_^

EDIT
ho messo gli intent
« Ultima modifica: 19 Marzo 2012, 21:23:03 CET da Mr.Donut »

Offline Maria

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    Mac OS X
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #6 il: 19 Marzo 2012, 23:14:43 CET »
0
Grazie per la risposta e per l'esempio esaustivo, solo che ho un altro problema, in pratica l'activity 2 nel resume non può avere finish poichè dalla 3 posso decidere sia di andare sia nella 2 che nella 1. Io avevo pensato qualcosa del tipo:

La 1 chiama la 2 tramite : Intent inent = new Intent(this, activity2.class);
                                        startActivity();

la 2 chiama la 3 tramite: Intent intent = new Intent(this, activity3.class);
                                      startActovityForResult(intent, COSTANTE);                -->non so bene come funziona

e la tre restituisce un valore alla 2, ad esempio se true torna alla 1, altrimenti non fare niente.
Solo che non so bene come implementare questo nell'activity3, non so se sono stata molto chiara.

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #7 il: 20 Marzo 2012, 00:10:49 CET »
0
Grazie per la risposta e per l'esempio esaustivo, solo che ho un altro problema, in pratica l'activity 2 nel resume non può avere finish poichè dalla 3 posso decidere sia di andare sia nella 2 che nella 1. Io avevo pensato qualcosa del tipo:

La 1 chiama la 2 tramite : Intent inent = new Intent(this, activity2.class);
                                        startActivity();

la 2 chiama la 3 tramite: Intent intent = new Intent(this, activity3.class);
                                      startActovityForResult(intent, COSTANTE);                -->non so bene come funziona

e la tre restituisce un valore alla 2, ad esempio se true torna alla 1, altrimenti non fare niente.
Solo che non so bene come implementare questo nell'activity3, non so se sono stata molto chiara.

Allora confermami se ho capito bene quello che devi fare:

Dall'Act1 passi all'Act2 e poi all'Act3. Poi dall'Act3 vuoi poter passare alla Act1 oppure alla Act2 passando dei parametri?

Offline Maria

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    Mac OS X
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #8 il: 20 Marzo 2012, 00:20:11 CET »
0
Si, solo che all'activity2 ci passo con un semplice finish(), il problema è quando voglio andare dalla 1 alla 3, mi sa che devo passare per forza dalla due se non voglio ricreare l'activity1.

Offline Mr.Donut

  • Utente junior
  • **
  • Post: 67
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Lg Optimus Chat
  • Sistema operativo:
    Ubuntu 11.04
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #9 il: 20 Marzo 2012, 00:23:49 CET »
+1
Si, solo che all'activity2 ci passo con un semplice finish(), il problema è quando voglio andare dalla 1 alla 3, mi sa che devo passare per forza dalla due se non voglio ricreare l'activity1.

Se dalla Act1 vuoi passare alla Act2 usi un intent per attivare la 2.
Se dalla Act1 vuoi passare alla Act3 usi un intent per attivare la 3.

Se invece hai fatto le cose in sequenza (act1 poi 2 e poi 3) puoi usare una variabile di flag in modo che entri nell'onResume e chiami il finish solo se quella variabile di flag è stata settata a true.
In alternativa puoi salvarti tutto lo stato della act1 e richiamarlo interamente, però mi sembra uno spreco...
Passami l'esercizio che ti ha dato il prof che facciamo prima a capirci. =)

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #10 il: 20 Marzo 2012, 00:26:46 CET »
+1
Allora quello che tu chiami costante è un valore che ti serve per identificare chi ha chiamato activity3 e che ti potrebbe servire per fare dei controlli. Per farti ritornare un valore in sostanza se non ricordo male (domani controllo) dovresti crearti una intent e mettere li dentro quello che vuoi ritornare alla activity precedente e poi richiamare il metodo finish().
In sostanza una cosa del genere
Codice (Java): [Seleziona]
setresult(Activity.RESULT_OK);
Intent i = new Intent();
i.putExtra("valore", boolean);
finish();

Offline Maria

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    Mac OS X
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #11 il: 20 Marzo 2012, 00:34:48 CET »
0
Non esiste un esercizio, sto facendo il tirocinio, ho quasi finito, stavo giusto sistemando queste imperfezioni. Tu intendi con le costanti di flag e utilizzando setFlag() giusto?

Offline Maria

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    Mac OS X
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #12 il: 20 Marzo 2012, 00:36:44 CET »
0
ciao djdedo, credo anche io che dovrebbe funzionare in questo modo, solo che non sono stata in grado di passare i parametri dall'activity chiamata all'activity chiamante.

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #13 il: 20 Marzo 2012, 01:00:01 CET »
+1
Il metodo onActivityResult riceve come parametri la costante della activity chiamante il risultato (Activity.RESULT_OK) e una intent. Il valore booleano che setti nella activity3 prima del metodo finish() te lo troverai li dentro e ci puoi fare quello che vuoi. La prassi è controllare che il result sia ok e poi controllare i valori della intent ritornats

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:ritornare ad un'activity precedentemente visualizzata
« Risposta #14 il: 20 Marzo 2012, 08:21:23 CET »
+1
Io farei cosi':

Codice (Java): [Seleziona]
Intent intent = new Intent(tuoContext, tuaActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

Saluti.
I numeri contano molto di più del seme.