У меня есть три действия A, B и C. Из действия A я могу вызвать действие B, а из B я могу вызвать C, и я также могу вызвать действие C из действия A напрямую.
Дело в том, что при возврате результата из C напрямую в A через методы setResult
и onbackpressed
все работает нормально. Проблема возникает, когда из действия C я возвращаю результат в действие B, а в его onActivityResult
я еще раз вызываю setResult
и onbackpressed
, чтобы передать тот же результат в действие A.
Activity
A появляется снова, но в этом случае его onActivityResult
никогда не срабатывает.
Вот некоторый код.
В действии С:
if (selection) {
setResult(RESULT_OK, data);
} else {
setResult(RESULT_CANCELED, data);
}
selection = false;
super.onBackPressed();
В действии B получите результат C и попытайтесь передать его обратно в действие A.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case RESULT_OK:
setResult(RESULT_OK, data);
onBackPressed();
break;
case RESULT_CANCELED:
if (list_search != null && !list_search.getAdapter().isEmpty()) {
list_search.setSelection(data.getIntExtra("position", 0));
}
break;
}
}
А вот А onActivityResult
. Я получаю результат, если он поступает из B или из C, но он срабатывает только при поступлении непосредственно из C. когда идет через B, появляется A, но не вызывает onActivityResult
, поэтому я не могу получить данные в этом случае.
public void OnActivityResult(int requestCode, int resultCode, Intent intent) {
....
switch (resultCode) {
case RESULT_CANCELED:
sincronizaCursorArticulos(intent.getStringExtra("cd_articulo"));
break;
case RESULT_OK:
sincronizaCursorArticulos(intent.getStringExtra("cd_articulo"));
fragment_order_entering.setEtArticulo(intent.getStringExtra("cd_articulo"));
fragment_order_entering.loadArticulo(false);
break;
}
}
Большое спасибо заранее.