2017-01-04 6 views
0

Я пытаюсь передать данные из одной активности в другую, однако onActivityResult не запускается. С моей активностью запуска, которая называется MainActivity, я могу просматривать галерею изображений, которая затем запускает onActivityResult с помощью этой части кода.onActivityResult не запускается

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

      startActivityForResult(i, RESULT_LOAD_IMAGE); 

С другой актив- ности у меня есть этот кусок кода

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

     } 
    }); 

Это также называют onActivityResult в MainActivity просто отлично, однако это следующая строка кода не будет.

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

Я просмотрел файлы манифеста и все настроено правильно. Я видел, как люди предлагали такие вещи, как поворот андроида: noHistory = "false", однако у меня нет ни одного из этих наборов в моем манифесте. Это очень просто и выглядит так.

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:largeHeap="true"> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/CustomTheme" 
     > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".ImageRollActivity" 
     android:theme="@style/GridTheme" 
     android:label=" Image Roll" 
     android:parentActivityName=".MainActivity" 
     > 
    </activity> 

Если у кого-то есть представление о том, почему это не срабатывает, что было бы очень полезно!

ответ

3

Во втором вы вызываете startActivityForResult() вместо setResult() (как в первом примере).

Звонок startActivityForResult() начнет свою деятельность, что означает, что оно будет воссоздано и пройдено через Activity lifecycle.

setResult() - то, что вам нужно, чтобы позвонить onActivityResult().

+0

Я читал этот жизненный цикл деятельности до этого, но никогда не для startActivityForResult. Прочитав этот раздел, я чувствую себя идиотом, чтобы задать вопрос сейчас ха-ха, но спасибо за ответ! – AConsiglio

+0

Нет проблем. Это происходит: D – codeMagic