У меня есть 3 класса в моем примере: класс А, основной вид деятельности. Класс A вызывает startActivityForResult:
Intent intent = new Intent(this, ClassB.class);
startActivityForResult(intent, "STRING");
Класс B, этот класс является TabActivity:
Intent intent = new Intent(this, ClassC.class);
tabHost.addTab...
Класс C, этот класс является обычным занятием:
Intent intent = this.getIntent();
intent.putExtra("SOMETHING", "EXTRAS");
this.setResult(RESULT_OK, intent);
finish();
onActivityResult вызывается в классе A, но RESULT_CANCELED
вместо resultCode RESULT_OK
используется возвращаемое значение null. Как мне вернуть что-то из Activity внутри TabHost?
Я понимаю, что проблема в том, что мой класс C на самом деле работает внутри класса B, а класс B - это то, что возвращает RESULT_CANCELED
обратно в класс A. Я просто пока не знаю, как это можно обойти.
источник
http://tylenoly.wordpress.com/2010/10/27/how-to-finish-activity-with-results/
С небольшой модификацией для "param_result"
источник
setResult
было главное. Установите для него что-то или значение, например,RESULT_OK
и все готово;setResult(RESULT_OK);
, Помог мне, +1Intent.FLAG_ACTIVITY_FORWARD_RESULT?
источник
Вы также можете реализовать onActivityResult в классе B и запустить Class C, используя startActivityForResult. Как только вы получите результат в классе B, установите его там (для класса A) на основе результата из класса C. Я не пробовал это, но думаю, что это должно сработать.
Еще одна вещь, на которую следует обратить внимание, это то, что действие A не должно быть действием с одним экземпляром. Чтобы startActivityForResult работал, ваш класс B должен быть вложенным действием для действия A, и это невозможно в одном действии экземпляра, новое действие (класс B) запускается в новой задаче.
источник
Для запуска Activity 2 из Activity 1 и получения результата вы можете использовать startActivityForResult и реализовать onActivityResult в Activity 1 и использовать setResult в Activity2.
источник