Если не хочется хранить состояние, можно передавать идентификатор элемента туда-обратно в интентах:
1. При вызове startActivityForResult добавляем в интент идентификатор элемента.
2. При возврате результата методом setResult() добавляем в интент кроме фотографии, еще и идентификатор, полученный ранее.
3. При обработке полученного результата в onActivityResult() получаем из интента фотографию и идентификатор элемента.
UPD:
Признаться, у меня для подобных задач реализован более удобный API.
При вызове startActivityForResult() сразу передаю обработчик результата.
А вся работа с requestCode скрыта в черном ящике.
public class ShellActivity extends AppCompatActivity {
public interface ActivityResultHandler {
void onActivityResult(int resultCode, Intent intent);
}
public void startActivityForResult(Intent intent, ActivityResultHandler handler) {
// implementation
}
}
Upd 2. А в Kotlin-е еще интереснее получается, вызов в одну сроку:
/**
* Возвращает Intent (если RESULT_OK), либо null (если RESULT_CANCELED)
* */
suspend fun ShellActivity.startActivityForResult(request: Intent): Intent? {
return suspendCoroutine {
this.startActivityForResult(request) { resultCode, response ->
if (resultCode == RESULT_OK) {
it.resume(response!!)
} else {
it.resume(null)
}
}
}
}