java - startActivityForResult 包含三个 Activity

标签 java android android-intent android-activity

我有三个 Activity ,我们称之为 Activity A、 Activity B 和 Activity C

首先,我在 Activity A 中,并使用 startActivityForResult 启动 QR 扫描仪( Activity B),如下所示:

Intent i;
i = new Intent(this, QrActivity.class);
startActivityForResult(i, 1);

一旦 Activity B 打开,这是处理结果并返回到上一个 Activity 的代码:

 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

现在工作完全正常,一旦再次打开 Activity A,一切都会正常工作。它是这样的:A --> B --> A

当我尝试这样做时,问题就出现了:A --> C --> B --> A

用户有两个选择,要么从 Activity A 启动 Activity B(qr 扫描仪),要么从 Activity C 启动。即使用户从 Activity C 访问 Activity B,我始终希望使用 Activity A 处理 Activity B 结果。

一旦我从 Activity C 打开 Activity B(qr 扫描仪),这就是我尝试解决它的方法:

当调用 Activity B 时,我在 Activity C 上调用 finish():

Intent in;
in = new Intent(this, QrActivity.class);
startActivityForResult(in, 1);
finish();

并且在 Activity B 中,而不是

Intent returnIntent = new Intent();

我将 Intent 设置为:

Intent returnIntent = new Intent(QrActivity.this, CheckpointsActivity.class);

返回到 Activity A 后,什么也没有发生,就像 Activity B 从未打开一样,当从 Activity C 启动 Activity B 时,它似乎没有得到结果。

任何形式的帮助将不胜感激!我知道这很令人困惑,但如果您愿意,我可以添加更多详细信息。

最佳答案

这不是 startActivityForResult() 的工作原理。您最好将数据保存在 SharedPreferences 或其他地方。

您也可以使用 startActivityForResult() 从 A 启动 ActivityC,然后执行相同的操作从 C 启动 B(尚未完成 C),然后传回你想要传递给 A 的结果。所以它会是这样的

A --> C --> B(完成)--> C(完成)--> A

使用startActivityForResult()启动C和B,并使用setResult()将结果返回到C和B的onActivityResult()

关于java - startActivityForResult 包含三个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387659/

相关文章:

android - 具有隐式 Intent 的父 Activity

java - 从 Android 连接到 Jersey REST Web 服务

java - 无法显示库的 JFrame

android - 在 TextView 上设置 Ellipsize 会减少显示的行数(而不是仅最后一个椭圆化)

android - 判断android包是vendor预装的

c# - Unity Android Intent

java - 尝试通过通知实现警报

java - 在 arraylist 内部转换时出错

java - 是否可以从 hibernate 动态添加存储过程?

Android ADT 插件问题