如何在Android中管理多个活动互动?

时间:2015-07-23 05:15:37

标签: android android-activity

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

1 个答案:

答案 0 :(得分:2)

选项1 :您可以将startActivityForResult()和" " onActivityResult()回调中的链。

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

选项2 :再次启动活动A,但为意图添加标记。

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

此意图将在活动A的onNewIntent()方法中收到。

修改

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