2014-12-15 4 views
1

У меня есть три действия A, B и C. Из действия A я могу вызвать активность B и из B, я могу позвонить C, и я могу напрямую вызвать активность C из активности A.Android Конкатенация onActivityResult() не срабатывает

Дело в том, что при возврате результата от C непосредственно к методам A-setResult и onbackpressed все работает нормально. Проблема возникает, когда из активности CI возвращает результат в B, а в его onActivityResult я вызываю еще раз setResult и пересылаю тот же результат в действие A.

Активность A снова появляется, но в этом случае его onActivityResult никогда срабатывает.

Есть код.

В деятельности C:

if (selection) { 

     setResult(RESULT_OK, data); 

    } else { 

     setResult(RESULT_CANCELED, data); 

    } 
    selection = false; 
    super.onBackPressed(); 

В деятельности B получить результат Ĉ и попытаться передать его обратно деятельности 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, поэтому я не могу получить данные в этом случае.

общественного недействительными OnActivityResult (интермедиат requestCode, внутр ResultCode, Намерение намерение) {

....

переключатель (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; 

Большое спасибо заранее.

ответ

1

OnActivityResult, похоже, не работает во многих случаях, если есть какой-либо андроид: launchMode = "singleTask | SingleInstance", добавленный к этому соответствующему действию, которое вы начали с StartActivityForResult() в файле androidmanifest.xml.

исх: onActivityResult With launchMode="singleTask"?

0

К сожалению, я забыл упомянуть о том, что три вида деятельности имеют SingleTop launchMode.

Смежные вопросы