【问题标题】:How to manage multiple activity interactions in Android?如何在 Android 中管理多个活动交互?
【发布时间】:2015-10-13 05:54:46
【问题描述】:

在我的活动中,我从活动 A(在后堆栈 A->B 中)调用活动 B,而不是从 B(在后堆栈 A-> B-> C)中调用活动 C,以反映一些结果活动A,而不是如何在单击按钮时跳转到活动A,并携带活动C的一些结果以反映在活动A中(同时清除活动B,C的回栈)

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    选项 1:您可以链式调用 startActivityForResult() 并在 onActivityResult() 回调中“展开”链。

    • Activity A 调用startActivityForResult() 启动Activity B
    • Activity B 调用startActivityForResult() 启动Activity C
    • 在活动 C 中调用setResult(RESULT_OK) 然后finish()
    • 在活动 B 的 onActivityResult() 中收到活动 C 的结果。处理结果(如果需要)。
    • 在活动 B 中调用setResult(RESULT_OK) 然后finish()
    • Activity A 的onActivityResult() 接收到Activity B 的结果。处理结果。

    选项 2:再次启动 Activity A,但在 Intent 中添加标志。

    Intent intent = new Intent(this, ActivityA.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    // add more data to Intent
    startActivity(intent);
    finish();
    

    此意图将在 Activity A 的 onNewIntent() 方法中接收。

    编辑

    选项 3: 使用 LocalBroadcastManager 在本地发送广播(仅在您的进程内)。这需要在 Activity A 中动态注册一个BroadcastReceiver,然后从 Activity C 发送广播。您仍然需要使用上述两种技术之一返回到 Activity A 并清除堆栈;这只是改变了数据传输回 Activity A 的方式。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多