Autore Topic: Passare un oggetto da un activity all'altra  (Letto 946 volte)

Offline Phate

  • Utente junior
  • **
  • Post: 123
  • Respect: +6
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy S
  • Sistema operativo:
    Windows 7
Passare un oggetto da un activity all'altra
« il: 13 Maggio 2012, 12:30:52 CEST »
0
Ciao,
vi spiego brevemente il problema: una prima activity inizializza una connessione e si ritrova così una socket inizializzata.
La seconda activity è il cuore del programma.

Siccome sono nuovo non vorrei fare errori: voi come mi consigliate di agire per passare la socket alla seconda activity?Ho visto putExtra ma supporta solo tipi primitivi o cmq conosciuti.
« Ultima modifica: 13 Maggio 2012, 14:29:59 CEST da Phate »

Offline Phate

  • Utente junior
  • **
  • Post: 123
  • Respect: +6
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy S
  • Sistema operativo:
    Windows 7
Re:Passare un oggetto da un activity all'altra
« Risposta #1 il: 16 Maggio 2012, 19:37:13 CEST »
0
Allora...ho risolto il problema della socket ma ora ne ho un altro!
In caso di eccezione vorrei inviare un messaggio di errore (stringa) all'activity precedente e ho pensato di fare così:
Codice: [Seleziona]
protected void onResume(){
            super.onResume();
            Intent i = getIntent();
           
        if(i.hasExtra("error")){
          mostra un toast all'utente contenente l'errore
         }

nell'activity chiamante invece faccio cosi:
Codice: [Seleziona]
try{

}catch(Exception ex){
Intent intent = new Intent(SecondActivity.this,StartActivity.class);
                                    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                                    intent.putExtra("error", ex.getMessage());
                                    startActivity(intent);
}


stranamente la prima activity sembra non entrare proprio nel ramo if dell'onResume...come mai?

jfrankie

  • Visitatore
Re:Passare un oggetto da un activity all'altra
« Risposta #2 il: 17 Maggio 2012, 16:58:27 CEST »
0
Quando passi da una Activity ad un'altra l'activity chiamante perde il controllo e non puoi tornare indietro alcuna eccezione o risultato.
Puoi tuttavia utilizzare invece di startActivity(Intent) startActivityForResult(Intent, int) dove nell'intent ci passi il valore della nuova activity da chiamare ed int è un identificativo univoco della tua richiesta.

L'Activity chiamante deve implementare il metodo onActivityResult(int requestCode, int resultCode, Intent data) e nella activity chiamata per rimandare indietro il risultato chiami il metodo setResult(int).


Offline Phate

  • Utente junior
  • **
  • Post: 123
  • Respect: +6
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy S
  • Sistema operativo:
    Windows 7
Re:Passare un oggetto da un activity all'altra
« Risposta #3 il: 18 Maggio 2012, 09:51:43 CEST »
0
Il problema è che dovrebbe visualizzare il messaggio d'errore che non è sempre lo stesso...in alternativa mi occorrerrebbe visualizzare questo messaggio nell'activity che lo lancia e subito dopo "uscire" all'activity precedente.

jfrankie

  • Visitatore
Re:Passare un oggetto da un activity all'altra
« Risposta #4 il: 18 Maggio 2012, 10:05:56 CEST »
0
Quando ritorni con setResult oltre a passare il codice di ritorno che può variare e lo puoi settare a tuo piacimento puoi aggiungere anche un'intent con i dati di ritorno come per esempio l'eccezione sollevata (es. tipo una stringa o un codice) per semplificare.

Il try/catch nella chiamata ad un activity di tipo startActiviy non ha alcun effetto sulle eccezioni sollevate dall'activity chiamata.