2012-05-10 12 views
16

Sto provando a fare una semplice applicazione per Android. Ho due attività (A e B). In B voglio solo selezionare un date.in onActivityResult sono nulli

comincio A, e fare:

Intent intent = new Intent(); 
intent.setClass(this, B.class); 
startActivityForResult(intent,1); 

Poi, nel B, lo faccio:

Intent intent = getIntent(); 
setResult(RESULT_OK); 
intent.putExtra("Date",dateSelected); 
finish(); 

E, in A, ho il metodo successivo:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==RESULT_OK && requestCode==1){ 
     Bundle bundle = getIntent().getExtras(); 
     String aux = bundle.getString("nuevo"); 
     ..... 
    } 

Ma data e bundle, sono null. Quando eseguo il debug del codice, vedo che nella classe B,, è il Extras, ma poi, quando chiamo finish() e ritorno a class A, questo intent non è raggiungibile.

Come posso risolvere questo problema?

+1

C'è un motivo per il nome della chiave nell'attività B diverso dal nome della chiave nel metodo onActivityResult() nell'attività A? –

risposta

39

provare questo:

Poi, in B, lo faccio:

Intent intent = getIntent(); 
intent.putExtra("Date",dateSelected); 
setResult(RESULT_OK, intent); 
finish(); 

E, in A:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
if(resultCode==RESULT_OK && requestCode==1){ 
Bundle MBuddle = data.getExtras(); 
String MMessage = MBuddle .getString("Date"); 
} 
} 
+1

grazie !!! avevo bisogno di cambiare setResult (RESULT_OK, intento). è facile, ma io sono nuovo nella programmazione Android. – Nobelisco

+1

@Nobelisco: va bene sempre benvenuto amico.se hai altri problemi basta commentare –

+0

setResult (RESULT_OK, intent); Mi ha aiutato –

9

in A onActivityResult metodo

if(null!=data){ 

    Bundle bundle = data.getExtras(); 
    String mydate = bundle.getString("Date"); 

    } 

e in B

Intent returnIntent = new Intent(); 
returnIntent.putExtra("Date",dateSelected); 
setResult(RESULT_OK,returnIntent);  
finish(); 
+0

grazie !!! questo era il problema! – Nobelisco

+0

+1 @SamirMangroliya dipende da Nobelisco quale risposta accetta o no –

+1

non ho alcun problema per questo, ma a volte accetto e non accettare quindi accettare quindi non accettare !!! lolz ... –

0

So che questo si risponde, ma solo per dare più spiegazioni sull'errore, si stava utilizzando getIntent() al posto dell'elemento data ricevuta il callback.

getIntent() restituisce l'intento che è stato originariamente utilizzato per aprire Activity A (magari quando è stato aperto l'applicazione o da un'altra attività), e data è l'intento che Attività B restituito come parametri di risposta.

Inoltre, si stava utilizzando getIntent() in attività B invece di creare un nuovo Intent che sarebbe tornato in attività A.

Intent returnIntent = new Intent(); 

Infine, l'intento creata deve essere aggiunto in setResult

setResult(RESULT_OK,returnIntent); 
Problemi correlati