gpt4 book ai didi

android - Activity 返回堆栈 - 保留第一个启动的 Activity 并清除其他 Activity

转载 作者:行者123 更新时间:2023-11-30 02:36:49 27 4
gpt4 key购买 nike

情况是这样的。 A 是应用启动的第一个 Activity。

给定 A -> B,如果我调用 Activity F,它变成 A -> F 清除 B。

但是,有一些情况,例如从 A -> B -> C 调用 F。它应该再次解析为 A -> F。因此我认为 FLAG_ACTIVITY_NO_HISTORY 不会起作用。

编辑:澄清结构就像,

A(启动)

B D F(第 2 级,A -> B,A -> D,或 A -> F)

C E(第 3 级,A -> B -> C 或 A -> D -> E)

我怎样才能做到这一点?

最佳答案

当您在 A->B 并想要启动 F 时,请在 B 上调用 finish(),然后调用 startActivity(F)。你的 backstack 将是 A->F。

如果你的堆栈更大(A->B->C)并且你希望它变成 A->F,你可以使用 Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK 将任务带回 A,然后从根调用您需要的任何内容。

像这样

class A {
public void onStart(){
Intent intent = getIntent();
if(intent != null && intent.contains(EXTRA_INVOKE)){
startActivity(Class.forName(intent.getExtra(EXTRA_INVOKE)));
}
}

public static void restoreStackTo(Context context, Class<? extends Activity> clazz){
Intent intent = new Intent(context, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(EXTRA_INVOKE, clazz.toString());
startActivity(intent);
}
}

并将其用作

A.restoreStackTo(F.class) 

当堆栈为 A->B->C 时,来自 C。

关于android - Activity 返回堆栈 - 保留第一个启动的 Activity 并清除其他 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26416942/

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