2017-01-04 8 views
0

Ich versuche, Daten von einer Aktivität an eine andere zu übergeben, aber das onActivityResult wird nicht ausgelöst. Mit meiner Startaktivität, die MainActivity heißt, kann ich eine Bildergalerie anzeigen, die dann das onActivityResult mit diesem Codecode auslöst.onActivityResult wird nicht ausgelöst

Intent i = new Intent(
        Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

      startActivityForResult(i, RESULT_LOAD_IMAGE); 

Von einem anderen Acitivity habe ich dieses Stück Code

gridLayout.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Intent intent =new Intent(); 
      setResult(RESULT_OK,intent); 
      intent.setClass(getApplicationContext(), MainActivity.class); 
      intent.putExtra("someData",id); 
      finish(); 

     } 
    }); 

Dies wird jedoch in MainActivity nennt onActivityResult auch ganz gut diese nächste Zeile des Codes nicht.

gridLayout.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Intent intent = new Intent(); 
      intent.setClass(getApplicationContext(), MainActivity.class); 
      intent.putExtra("someData",id); 
      startActivityForResult(intent, 2); 
     } 
    }); 

Ich habe die Manifest-Dateien untersucht und alles ist korrekt eingestellt. Ich habe Leute gesehen, die Dinge vorschlagen, wie Androiden zu verwandeln: noHistory = "false", aber ich habe keine davon in meinem Manifest festgelegt. Es ist sehr einfach und sieht so aus.

Wenn jemand einen Einblick hat, warum dies nicht ausgelöst wird, würde das sehr geschätzt werden!

Antwort

3

In der zweiten rufen Sie startActivityForResult() anstelle von setResult() (wie im ersten Beispiel).

Aufruf startActivityForResult() startet die Aktivität, was bedeutet, dass es neu erstellt wird und gehen Sie durch die Activity lifecycle.

setResult() ist, was Sie dafür benötigen, um onActivityResult() zu rufen.

+0

Ich habe gelesen, dass Aktivität Lebenszyklus vor, aber nie für startActivityForResult. Nachdem ich diesen Abschnitt gelesen habe, fühle ich mich wie ein Idiot, die Frage jetzt zu stellen, haha, aber danke für die Antwort! – AConsiglio

+0

Kein Problem. Es passiert: D – codeMagic

Verwandte Themen