i dati in onActivityResult sono nulli

Sto provando a fare una semplice applicazione per Android . Ho due attività ( A e B ). In B voglio solo select una date .

Comincio A , e faccio:

  • Come controllare l'authorization multipla a una sola richiesta in Android M?
  • La visualizzazione di scorrimento non cambia quando il contenuto della vista figlio cambia
  • Differenza tra android-support-v7-appcompat e android-support-v4
  • Android simulare rapido spostamento
  • Il mio servizio Android si ferma bruscamente e si crea una nuova
  • Problemi con i permessi bluetooth android
  •   Intent intent = new Intent(); intent.setClass(this, B.class); startActivityForResult(intent,1); 

    Poi, in B , 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 i data ei bundle sono null . Quando debug il codice, vedo che nella class B , l' intent ha gli Extras , ma poi, quando chiamo finish() e tornare alla class A , questo intent non è raggiungibile.

    Come posso risolvere questo problema?

  • Come posso creare un'applicazione di sostituzione home screen personalizzata per Android?
  • Java GregorianCalendar e Calendario perdono i fine settimana, giorni in un mese per agosto e settembre 2010
  • Android 2.1: Muliple Handlers in un'unica attività
  • Controllo dell'input di file HTML con cattura e accettare gli attributi funziona male?
  • Lingue mancanti in TTS android
  • perché il mio layout_weight non funziona?
  • 3 Solutions collect form web for “i dati in onActivityResult sono nulli”

    prova questo:

    Poi, in B, 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"); } } 

    in A metodo OnActivityResult

      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(); 

    So che questo è stato risolto, ma solo per dare più spiegazioni sull'errore, si stava utilizzando getIntent() invece dell'elemento data ricevuto sul callback.

    getIntent() restituisce l'intento che è stato originariamente utilizzato per aprire l' attività A (forse quando hai aperto l'applicazione o da un'altra attività) e i data sono l'intento che l' attività B restituisce come parametri di risposta.

    Inoltre, stai utilizzando getIntent() nell'attività B invece di creare un nuovo intento che verrà restituito all'attività A.

     Intent returnIntent = new Intent(); 

    Infine, l'intento creato deve essere aggiunto in setResult

     setResult(RESULT_OK,returnIntent); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.