我有三个活动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&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;
}
}
非常感谢。
答案 0 :(得分:1)
如果在androidmanifest.xml文件中使用StartActivityForResult()启动的相应活动中添加了android:launchMode =“singleTask | SingleInstance”属性,则很多情况下,OnActivityResult似乎不起作用。
答案 1 :(得分:0)
抱歉,我忘了提到这三个活动都有singleTop launchMode。