Ситуация:Получение результата от деятельности в последовательности
Я три вида деятельности, расположенной как так
активность A/Фрагмент A -> B/активность Фрагмент B -> C/активность фрагмента C
Моя конечная цель - получить результат от C до A. Я сделал это, используя startactivityforresult().
Проблема:
Когда в деятельности C, жму либо навигации вверх или кнопку возврата, а затем повторно ввести активность C из B. После этого я закончу с деятельностью и нажмите ОК. Я установил результат и закончил. Действие B получает результат в onActivityResult, и все в порядке (код запроса хорош с 0, а resultcode равен RESULT_OK). Затем активность B устанавливает тот же результат и заканчивается. Тем не менее, когда onActivityResult вызывается в Activity A, почему код результата 0 и данные являются нулевыми?
Я думал, что startactivityforresult отправляет результат обратно в предыдущую прямую деятельность.
активность
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.activity_search_fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(v.getContext(), SearchActivity.class), REQUEST_RESTAURANT);
}
});
активность Б
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), AddActivity.class);
intent.putExtra(EXTRA_YELP_RESTAURANT, mRestaurant);
((Activity)v.getContext()).startActivityForResult(intent, FavoritesActivity.REQUEST_RESTAURANT);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if ((requestCode == FavoritesActivity.REQUEST_RESTAURANT) &&
(resultCode == Activity.RESULT_OK)) {
setResult(resultCode, data);
finish();
}
}
активность С
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_done_check:
Intent data = new Intent();
data.putExtra(EXTRA_MY_RESTAURANT, mRestaurant);
getActivity().setResult(Activity.RESULT_OK, data);
getActivity().finish();
break;
default:
return false;
}
return true;
}
Я не думаю, что это причина. Я только что написал демо, и все сработало, как ожидалось. –
Влияет ли ваша активность на onActivityResult()? –