gpt4 book ai didi

android - 从堆栈中弹出已知数量的 Activity

转载 作者:行者123 更新时间:2023-11-29 22:07:13 25 4
gpt4 key购买 nike

在构建应用程序的过程中,我有一个 Activity,我们称之为 A,我多次打开,如 A(1) -> A(2) -> A(3) -> ... -> A(m) -> ... -> A(n).

在应用程序中,我想一直弹出到 A(m),有没有办法将 Activity 一直弹出到选定的 Activity ?

我已经看到了一些带有 FLAG_ACTIVITY_CLEAR_TOP 的答案但在我看来,这只是清除整个堆栈并转到堆栈中的第一个元素,而这不是我想要得到的。

更新:

我在这里试图实现的目标如下:我有一个问题列表,用户可以为每个问题选择不同的答案。

一旦他选择,问题和答案就会进入历史列表,并提示另一个问题。在任何给定的时间点,用户都可以单击历史记录按钮并返回到他选择的问题。

所有的问答 Activity 都是一样的,所以回到一个问题意味着弹出堆栈直到到达那里。

最佳答案

如果我理解正确的话,你是说你有 N 个相同的 Activity ,并希望返回堆栈中的某个任意起点 Activity ?

我不完全清楚你是否提前知道你的“粘性” Activity 之前的所有 Activity 都应该完成,或者这是否是在某个地方确定的

当 N 个 Activity 是重复的 Activity 时,我不知道有什么任意的方法可以将它们从堆栈中弹出,但是您可以自己滚动,例如(未完成的代码)

如果您提前知道 A(M) 在启动下一个 Activity 之前会保持粘性,您可以通过向每个前向 Activity 传递一个标志来告诉每个前向 Activity 它需要在启动新任务后自行终止然后当链中的最后一个 Activity 结束时,你又回到了 A(M)

in A(...) 
startSelf()
{

Intent I = new Intent(this,MyActivity.class);
if (bFinishSelf || bFinishForward)
I.putExtra("finishself", 1);

if (Finishelf)
finish();


startActivity(I);

in ... all A(...) onCreate( ...

Bundle b = getIntent().getExtras();
if(b !=null && extras.getInt("finishself");
bFinishSelf = true;

然后当你开始一个新的 Activity 时,检查是否设置了 finishself 标志,如果是的话,在开始新的 Activity 后调用 finish() ...

如果另一方面 A(z) 决定你需要返回 A(...) 那么我猜在 A(z) 中你可以告诉调用父类他们需要杀死他们自己,直到达到数据中包含的一些 ID ...

一个(男) 开始 Activity 结果(...)

A(Z) 您以某种方式确定 A(M) 应该是粘性 Activity ...

finshAndStopAt(int ID) {
Intent I = new Intent();
I.putExtra("finish",ID);

if (getParent() == null) {
setResult(Activity.RESULT_OK, I);
} else {
getParent().setResult(Activity.RESULT_OK, I);
}
finish();

所有 A(z ... m)( parent 的)都将监视返回数据

@Override void onActivityResult(int requestCode, int resultCode, Intent data) {

// If we are asked to finish ourselves, pass it on ...
if (null != data && data.getInt("finish",stopAt) != myID) {
if (getParent() == null) {
setResult(Activity.RESULT_OK, data);
} else {
getParent().setResult(Activity.RESULT_OK, data);
finish();
}
// else we can hang around and are the sticky activity
}

有点痛苦,也许有人知道更简单的方法

关于android - 从堆栈中弹出已知数量的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10527879/

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