Autore Topic: invio dati da un activity ad un altra activity  (Letto 369 volte)

Offline EdoardoGoffredoDeveloper

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
invio dati da un activity ad un altra activity
« il: 27 Gennaio 2016, 17:22:31 CET »
0
Salve ragazzi, premetto che sono alle prime armi con android..

E' possibile passare dei dati da un activity (ad esempio MainActivity) ad una seconda activity e la seconda activity poi ripassa altri dati alla prima activity??

Per startare un activity passandogli dei dati so che si usa il codice
Codice (Java): [Seleziona]
Intent vai=new Intent(getApplicationContext(),Main2Activity.class);
                 vai.putExtra("chiave",variabile);
                startActivity(vai);

E per ricevere il dato dall'activity si usa
Codice (Java): [Seleziona]
String ricevo=getIntent().getExtras().getString("chiave");

La mia domanda è:

Ho la prima activity che al suo avvio lancia immediatamente la seconda activity però deve anche ricevere dalla seconda..
ad esempio se è la prima volta che apro l'app, la prima activity che deve ricevere dalla seconda non avra nessun dato poichè ancora deve arrivare ad aprire la seconda activity ed infatti se metto il codice
Codice (Java): [Seleziona]
 String ricevoo=getIntent().getExtras().getString("chiave");
        if (ricevo.equals("")){

        }else {
           Text.setText(ricevoo);
        }
nella prima, l'app va in crash.
Come posso fare per far si che la prima activity riceva dalla seconda e controllare che se ci sono dati allora fai determinate cose (come ad esempio settare una text view) altrimenti non fargli fare niente?

Probabilmente sono stato contortissimo nello spiegarmi.
Grazie mille in anticipo e scusate la mia ignoranza  :D

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 717
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:invio dati da un activity ad un altra activity
« Risposta #1 il: 28 Gennaio 2016, 13:10:53 CET »
0
Devi invocare startActivityForResult() invece di startActivity(), quindi ricevi la risposta nel gestore dell'evento onActivityResult().

L'activity chiamata imposta la risposta da restituire con setResult() e quindi finish()

Dettagli nei link seguenti:

Getting a Result from an Activity | Android Developers
Activity | Android Developers
Ohmnibus
Le mie app su Play Store

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

Offline EdoardoGoffredoDeveloper

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
Re:invio dati da un activity ad un altra activity
« Risposta #2 il: 28 Gennaio 2016, 14:04:50 CET »
0
Ciao grazie per aver risposto prima di tutto..
Una cosa che però non mi è chiara.. Nella prima activity (che è quella che viene startata per prima) e che riceverà dalla seconda che verra startata dalla prima cosa ci metto??
Nella seconda activity da quanto ho capito utilizzo al posto del codice "startActivity()" il codice "startActivityForResult" , ma nella prima cosa ci metto per ricevere i dati dalla seconda? Ovviamente alla prima apertura, la prima activity non riceverà nulla dato che la seconda activity deve essere ancora startata e perciò vorrei fare un controllo che se non ci sono gli Extras non fai nulla, altrimenti li prendi e setti una TextView con gli extra prelevati..
GRAZIE MILLE IN ANTICIPO :):):)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 717
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:invio dati da un activity ad un altra activity
« Risposta #3 il: 28 Gennaio 2016, 14:20:33 CET »
+1

La tua prima activity deve chiamare la seconda usando startActivityForResult().

La seconda activity invierà indietro una risposta usando setResult().

La prima activity riceverà la risposta in onActivityResult(). Questo evento è generato solo in risposta ad uno startActivityForResult, quindi non occorre verificare se si tratta del primo avvio.


Per dettagli ed esempi consulta i link che ho indicato nei post precedenti.
Ohmnibus
Le mie app su Play Store

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