我有三个活动:A,B,C。我的申请流程是:A - > B& B-> A或A-> B& B - > C& C->一种。 所以我使用startActivityForResult将数据从A传递到另一个活动,在A i中也有onActivityResult来处理接收到的数据。 在B中,我通过以下方式更改数据并转到C:
Intent intent = new Intent(this,C.class);
Bundle bundle = this.getIntent().getExtras();
bundle.putSerializable("newdatafromA", newdatafromA);
intent.putExtras(bundle);
startActivity(intent);
在C中,我获取数据并进行更改。我尝试使用结果代码setResult()并转到A但它没有成功:
Intent positveActivity = new Intent(getApplicationContext(),A.class);
Bundle bundle = new Bundle();
bundle.putSerializable("newdata", newdata);
bundle.putSerializable("newdatafromA", newdatafromA);
positveActivity.putExtra("data", bundle);
setResult(2, positveActivity);
startActivity(positveActivity);
我调试它并没有跳转到A.class中的onActivityResult(我在这里处理结果代码= 2)。和bundle拥有所有数据。 有什么想法可以帮我解决吗?
答案 0 :(得分:3)
从您的活动B.当您前往活动C.然后使用startActivityForResult 然后在你的活动B.覆盖onActivityResult并处理来自Activity C的数据然后通过setResult将数据传回活动A,就像你在活动C中所做的那样。所以这个数据将被传递回活动A
流速:
活动A - >活动B - >活动C. 然后从活动C回来 - >活动B,最后回到活动A
答案 1 :(得分:0)
回到OnactivityResult你不应该创建一个intent然后startActivity A ..
你只需要调用finish();方法并将自动返回活动A并运行onActivityResult ...
喜欢: 在活动C中:
Bundle bundle = new Bundle();
bundle.putSerializable("newdata", newdata);
bundle.putSerializable("newdatafromA", newdatafromA);
positveActivity.putExtra("data", bundle);
setResult(2, positveActivity);
finish();

希望有所帮助:)
答案 2 :(得分:0)
从活动C启动活动A时,仅开始使用普通方法,但是 -
使用Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
作为您的旗帜。然后它会以你想要的方式工作。
Intent intent = new Intent(C.this,A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);