活动A位于堆栈的根目录,然后是startActivityForResult B,然后是来自B的startActivityForResult C并完成B ..因此堆栈现在是A-C。
但是当我在C中使用setResult并完成它时,活动A不会收到此结果。这可能吗?
答案 0 :(得分:3)
您可以使用“启动活动C”的结果完成活动B,然后从活动A的结果开始活动C ...
答案 1 :(得分:1)
不是使用活动B的上下文启动活动C,而是使用活动A的上下文本身为结果启动它,这样当你在C中设置结果并完成它将返回到A。
答案 2 :(得分:0)
我建议实现一个模态,你可以在活动C中保存结果数据,然后完成活动C,使活动A出现在顶部,在活动A的onresume()中你可以访问模态中的数据一些条件并做必要的操作...
答案 3 :(得分:0)
class A extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
// code.........
Button button=findViewById(R.id.btn_id);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent=new Intent(A.this,B.class);
startActivityForResult(intent, 1001);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK )
{
if(requestCode==1001)
{
Intent intent=new Intent(A.this,C.class);
startActivityForResult(intent, 1002);
}
else if(requestCode==1003)
{
//here you will get the result form c
}
}
}
}
答案 4 :(得分:0)
如果您希望将活动C的结果传递回活动A:
在活动A中,呼叫B:
Intent showB = new Intent(ActivityA, ActivityB);
startActivityForResult(showB, RequestCode);
在活动B中,呼叫C:
Intent showC = new Intent(ActivityC);
showC.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(showC);
finish();
在活动C中:
//set the result code and close the activity
Intent result = new Intent();
setResult(RESULT_OK, result);
finish();
在活动A中:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
doSomeStuffIfRequestCodeMatched()
}