2017-01-04 9 views
0

をトリガされていません。 MainActivityと呼ばれる私のスタートアップアクティビティでは、イメージギャラリーを表示できます。このギャラリーは、このコードでonActivityResultを起動します。別のAcitivityから onActivityResultが、私はしかし、onActivityResultがトリガされていない別の活動からのデータを渡すためにしようとしている

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

      startActivityForResult(i, RESULT_LOAD_IMAGE); 

私はこれもうまくしかし、このコードの次の行ではないでしょうMainActivityにonActivityResult呼び出すコード

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

     } 
    }); 

のこの作品を持っています。

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

マニフェストファイルを調べて、すべてが正しく設定されています。私は、人々が、android:noHistory = "false"というようなものを提案しているのを見たことがありますが、私はこれらのものがどれもマニフェストにはありません。それはとてもシンプルで、このように見えます。

これがトリガされない理由については、誰かが洞察力を持っていると大変感謝します。あなたは(最初の例のように)startActivityForResult()の代わりsetResult()を呼び出している二一

答えて

3

startActivityForResult()を呼び出すとアクティビティが開始されます。つまり、再作成され、Activity lifecycleに送信されます。

setResult()は、onActivityResult()を呼び出すために必要なものです。

+0

私はそのアクティビティのライフサイクルを前に読んだことがありますが、startActivityForResultの場合はこれを読んでいません。そのセクションを読んだ後、私は今、笑いを尋ねる馬鹿のように感じますが、応答に感謝します! – AConsiglio

+0

問題ありません。それは起こる:D – codeMagic

関連する問題