在我的活动中,我从活动A(在后面的堆栈A-> B中)调用活动B,而不是从B的活动C(在后面的堆栈A-> B-> C中)调用某些结果反映活动A,而不是如何跳转到按钮点击活动A并带有活动C的一些结果反映回活动A(同时清除活动B,C的堆栈)
答案 0 :(得分:2)
选项1 :您可以将startActivityForResult()
和" " onActivityResult()
回调中的链。
startActivityForResult()
启动活动B startActivityForResult()
启动活动C setResult(RESULT_OK)
,然后调用finish()
onActivityResult()
中收到。处理结果(如果需要)。setResult(RESULT_OK)
然后finish()
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的方式。