gpt4 book ai didi

android - FLAG_ACTIVITY_CLEAR_TOP 和 onActivityResult

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:05 25 4
gpt4 key购买 nike

我有多个管理连接的 Activity (B => C => D)。如果该连接断开,它们应该全部清除并将结果返回给 A,具体取决于原因(RESULT_USER_TERMINATED、RESULT_LOW_SIGNAL、RESULT_UNKOWN 等...)

在A中我有

Intent intent = new Intent(this, B.class);
startActivityForResult(intent, REQUEST_EXIT_STATUS);

在 B 和 C 中

Intent intent = new Intent(this, C.class);
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(myIntent);

在D

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
setResult(ConnectActivity.RESULT_USER_TERMINATED);
startActivity(intent);

这是行不通的。相反,A 得到 RESULT_CANCELED。我怎样才能使这项工作按预期进行?或者,是否有更好的方法来实现相同的结果?

最佳答案

我建议将结果传回堆栈而不是使用 Intent.FLAG_ACTIVITY_FORWARD_RESULT,这样每个新的 Activity B、C、D 都为结果启动,每个 Activity 实现 onActivityResult 并简单地转发结果下降例如:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

setResult(resultCode);
finish();
}

这样一来,无论哪个 Activity (B、C、D)生成它,预期的结果代码都会返回到您的 Activity A。

关于android - FLAG_ACTIVITY_CLEAR_TOP 和 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com