【发布时间】:2014-12-15 11:15:04
【问题描述】:
我有三个活动 A、B 和 C。从活动 A 我可以调用活动 B,从 B 我可以调用 C,我也可以直接从活动 A 调用活动 C。
问题是,当通过 setResult 和 onbackpressed 方法将结果从 C 直接返回到 A 时,一切正常。当我从活动 C 将结果返回给 B,并在其 onActivityResult 中再次调用 setResult 和 onbackpressed 以将相同的结果传递给活动 A 时,问题就出现了。
Activity A 再次出现,但在这种情况下,它的onActivityResult 永远不会被触发。
这是一些代码。
在活动 C 中:
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;
}
}
非常感谢。
【问题讨论】: