Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android历史堆栈清除,没有一个_Java_Android_Android Activity - Fatal编程技术网

Java Android历史堆栈清除,没有一个

Java Android历史堆栈清除,没有一个,java,android,android-activity,Java,Android,Android Activity,我有一些活动,比如 A-> Splash Screen B-> Home Screen C-> a List activity D-> a View activty E-> a List activity F-> a View activty 正常应用程序从A->B开始 然后用户选择一个列表活动 然后用户从列表活动中选择一个视图 我的问题是清除活动堆栈 我的应用程序将列表或视图活动跳转到具有facefook风格导航的活动 例如,用户选择列表活动C,然后选择查

我有一些活动,比如

A-> Splash Screen
B-> Home Screen
C-> a List activity
D-> a View activty
E-> a List activity
F-> a View activty
正常应用程序从A->B开始

然后用户选择一个列表活动

然后用户从列表活动中选择一个视图

我的问题是清除活动堆栈

我的应用程序将列表或视图活动跳转到具有facefook风格导航的活动

例如,用户选择列表活动C,然后选择查看活动D。此时,用户可以跳转到活动E。在活动E中,如果用户按o后退按钮,则用户转到活动D

我想把它送到医院

我是说,我想在没有家庭活动的情况下清除活动中断

你怎么能这么做

对一些英语感到抱歉


谢谢。

如果您希望用户从您的所有活动返回B,您可以在调用任何Intent时从其他所有活动调用finish。这样,它们将从活动堆栈中删除

此外,您还可以覆盖后退按钮的行为:

@Override
public void onBackPressed() {
   Intent setIntent = new Intent(Intent.ACTION_MAIN);
   startActivity(setIntent);
}

但要确保这是你真正想要的。因为看起来你在做一些对用户体验非常不利的事情。阅读有关活动堆栈和任务的更多信息。应避免覆盖“后退”按钮的默认行为。

如果希望用户从所有活动返回B,则在调用任何意图时,可以从其他每个活动调用“完成”。这样,它们将从活动堆栈中删除

此外,您还可以覆盖后退按钮的行为:

@Override
public void onBackPressed() {
   Intent setIntent = new Intent(Intent.ACTION_MAIN);
   startActivity(setIntent);
}

但要确保这是你真正想要的。因为看起来你在做一些对用户体验非常不利的事情。阅读有关活动堆栈和任务的更多信息。应避免覆盖后退按钮的默认行为。

您可以像这样截取后退按钮按下:

@Override
public void onBackPressed() {
    // You want to start B Activity
    Intent a = new Intent(this, B.class);

    // But you dont want it on top of E.
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    // Launching this will now remove every activity on top of B and bring B to front, not! relaunch it.
    startActivity(a);
}
您可能想查看和

祝你今天愉快

编辑:

如果要在按下“上一步”时关闭应用程序:

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

您可以按如下方式截取后退按钮:

@Override
public void onBackPressed() {
    // You want to start B Activity
    Intent a = new Intent(this, B.class);

    // But you dont want it on top of E.
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    // Launching this will now remove every activity on top of B and bring B to front, not! relaunch it.
    startActivity(a);
}
您可能想查看和

祝你今天愉快

编辑:

如果要在按下“上一步”时关闭应用程序:

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}


您可以在AndroidManifest.xml文件中对活动元素使用标记android:noHistory=true。此标记允许不在活动堆栈中写入活动。

您可以在AndroidManifest.xml文件中对活动元素使用标记android:noHistory=true。此标记允许不在活动堆栈中写入活动。

调用D时,不能只完成C吗?其余的也一样。也许看看这里:我想你应该读一下:特别是关于启动模式的部分,用户可以从D回到C。通常我的启动程序活动是spalsh屏幕。我想回到主活动。如果您不希望某个活动位于活动堆栈中,可以在调用intent后调用finish。因此,当您离开splash活动时,请调用finish,您的家庭活动将位于活动堆栈的底部,即应用程序占用的部分。但我的主要问题是,当用户从D调用E时,同时从堆栈中清除活动C和D。活动C和D可以同时清除。因为用户可以从D转到C。当您调用D时,您不能只完成C吗?其余的也一样。也许看看这里:我想你应该读一下:特别是关于启动模式的部分,用户可以从D回到C。通常我的启动程序活动是spalsh屏幕。我想回到主活动。如果您不希望某个活动位于活动堆栈中,可以在调用intent后调用finish。因此,当您离开splash活动时,请调用finish,您的家庭活动将位于活动堆栈的底部,即应用程序占用的部分。但我的主要问题是,当用户从D调用E时,同时从堆栈中清除活动C和D。活动C和D可以同时清除。因为用户可以从D转到C。我使用像facebook这样的导航。所以用户可以跳转任何人的其他活动。但此应用程序不会覆盖后退按钮。我有它,它实现了默认模型。我的意思是,当用户向前移动时,他可以跳转到任何其他活动,但按下后退按钮会得到堆栈的最后一个活动。您的建议是什么?有什么解决办法吗?要么你不明白我的解决办法,要么我不明白你的问题。如果你在你的活动C,D,E,F中覆盖onBackPressed,你可以做任何你想做的事情,包括回到B。我说这是错误的,但它不是错误的,而是原则上的。你不应该干涉后堆栈的默认行为,但如果这是你真正需要做的-我的答案是你的解决方案。我理解。我应该实施你的方式,以C和E我应该回家活动。活动D和F通常回到C或E。我使用类似facebook的命名。所以用户可以跳转任何人的其他活动。但此应用程序不会覆盖后退按钮。我有它,它实现了默认模型。我的意思是,用户可以跳转到任何其他活动,当他移动为战争
d、 但是按下后退按钮可以得到堆栈的最后一个活动。你有什么建议?有什么解决办法吗?要么你不明白我的解决办法,要么我不明白你的问题。如果你在你的活动C,D,E,F中覆盖onBackPressed,你可以做任何你想做的事情,包括回到B。我说这是错误的,但它不是错误的,而是原则上的。你不应该干涉后堆栈的默认行为,但如果这是你真正需要做的-我的答案是你的解决方案。我理解。我应该实施你的方式,以C和E我应该回家活动。活性D和F通常回到C或E。ThanksOK。假设用户从活动E跳转活动F。如果用户按回F。用户可以去E。您的方式可以吗?可以。实现我的代码片段的活动并不重要。它会杀死B上面的所有活动,如果B在后面,它会把B带到前面。试试看:好的。成功了。那么,当点击后退按钮时,如何关闭活动上的应用程序呢。假设用户从活动E跳转活动F。如果用户按回F。用户可以去E。您的方式可以吗?可以。实现我的代码片段的活动并不重要。它会杀死B上面的所有活动,如果B在后面,它会把B带到前面。试试看:好的。成功了。那么,当点击后退按钮时,如何关闭活动上的应用程序呢