我有三个活动,我们只称它们为活动A,活动B和活动C
起初我在活动A,我正在使用startActivityForResult启动QR扫描程序(活动B),如下所示:
Intent i;
i = new Intent(this, QrActivity.class);
startActivityForResult(i, 1);
活动B打开后,这是处理结果并返回上一个活动的代码:
public void handleDecode(Result rawResult, Bitmap barcode)
{
if (rawResult != null) {
String textResult = rawResult.getText();
if (textResult != null) {
Intent returnIntent = new Intent();
returnIntent.putExtra("result", textResult);
setResult(RESULT_OK,returnIntent);
finish();
}
//rest of the code
现在这完全正常,一旦活动A再次打开,一切都按预期工作。它是这样的:A - > B - >甲
当我尝试这样做时出现问题:A - > C - > B - >甲
用户有两个选项,要么从活动A启动活动B(qr扫描程序),要么从活动C启动。即使用户从活动C访问活动B,我总是希望用活动A处理活动B结果。 / p>
一旦我从活动C打开活动B(qr扫描仪),这就是我尝试解决它的方式:
当调用Activity B时,我在Activity C上调用了finish():
Intent in;
in = new Intent(this, QrActivity.class);
startActivityForResult(in, 1);
finish();
在活动B中,而不是
Intent returnIntent = new Intent();
我将意图设为:
Intent returnIntent = new Intent(QrActivity.this, CheckpointsActivity.class);
在它返回活动之后A没有任何反应,就像活动B从未打开过一样,当活动B从活动C开始时,似乎没有得到结果。
任何形式的帮助将不胜感激!我知道这一切都非常令人困惑,但如果你愿意,我可以添加更多细节。
答案 0 :(得分:1)
这不是startActivityForResult()
的工作方式。最好在SharedPreferences
或其他地方保存数据。
你也可以使用startActivityForResult()
从A开始ActivityC
然后从C开始做B(还没有完成C),传回你要传递给A的结果那就像
A - > C - > B(完成) - > C(完成) - >甲
使用startActivityForResult()
启动C和B,并将setResult()
的结果返回到C和A的onActivityResult()