我有3个活动A,B和C
流程是:
活动A呼叫B,B呼叫C.(A - > B - > C)
现在我在活动C中,想要将一些结果返回给活动A而不涉及B.
场景是活动B应仅由A呼叫(如果用户按下C后退按钮,B将不会被呼叫,活动A将出现在前面)。
任何人都让我知道如何处理这种情况。
更新:
我从A
调用活动B.Intent intent = new Intent(this, B.class);
startActivityForResult(intent, 0);
我以同样的方式从B调用C.
在A我骑过onActivityResult
方法
答案 0 :(得分:2)
StartActivityForResult
。StartActivityForResult
从ActivityB启动。 Don't finish ActivityB
。set the result
。OnActivityResult()
中获得结果时,将结果设置为ActivityA并完成ActivityB。onBackPressed()
并将结果设置为null并完成ActivityC 答案 1 :(得分:1)
在startActivity调用活动B中的C后调用finish()
答案 2 :(得分:1)
这是你做的简单方法
活动C中的
Intent i=new Intent(getApplicationContext(), A.class);
i.putExtra("id", id);
startActivity();
返回按钮事件
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
Intent i=new Intent(getApplicationContext(), A.class);
i.putExtra("id", id);
startActivity();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 3 :(得分:1)
我认为您必须致电Activity C from B by startActivityForResult()
,然后致电Activity B override onActivityResult() and put finish()
;同样来自Activity A start Activity B by startActivityForResult()
这将指向活动A而不重新处理它。