Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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 Intent_Android Activity - Fatal编程技术网

Java Android中的活动

Java Android中的活动,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,关于Android应用程序中的活动,我有一个相当简单的问题。我还是个新手 在我目前的android应用程序中,我有大约10项活动。如果其中一个活动已经位于活动堆栈的后面,并且我想重新打开它,可以调用: Intent iLogin=newintent(这个,Login.class); 起始触觉(iLogin) 如果它仍然有点混乱,我会举一个例子。应用程序将随活动1一起启动。然后,用户打开活动2。稍后,他打开活动3以执行操作。执行操作后,我希望用户返回活动1。可以调用上面的代码吗?它是从堆栈中获

关于Android应用程序中的活动,我有一个相当简单的问题。我还是个新手

在我目前的android应用程序中,我有大约10项活动。如果其中一个活动已经位于活动堆栈的后面,并且我想重新打开它,可以调用:

Intent iLogin=newintent(这个,Login.class);
起始触觉(iLogin)

如果它仍然有点混乱,我会举一个例子。应用程序将随活动1一起启动。然后,用户打开活动2。稍后,他打开活动3以执行操作。执行操作后,我希望用户返回活动1。可以调用上面的代码吗?它是从堆栈中获取活动,还是创建新活动?如果否,如何从堆栈中获取活动


更新:我对回收活动感兴趣,而不是每次都创造新的活动。例如,并非所有的活动都需要创建一个新的活动。其中一些仅显示数据,可根据用户请求进行刷新。

我相信您可能希望使用的方法尝试该标志


如果堆栈中已存在标记,则这将使标记位于堆栈顶部,如果不存在标记,则创建一个新标记。

我相信您可能希望使用的方法尝试标记


如果堆栈中已经存在,则会将其置于堆栈顶部,如果不存在,则会创建一个新的堆栈。

我建议使用
标记\u活动\u清除\u顶部


Activity 1->Activity 2->Activity 3
那么在
Activity 3
之后,您想返回到
Activity 1
对吗?我假设您不希望活动2仍在运行,所以您应该使用
标记活动清除顶部
,这样中间的所有内容都将关闭

我建议使用
标记活动清除顶部


Activity 1->Activity 2->Activity 3
那么在
Activity 3
之后,您想返回到
Activity 1
对吗?我假设您不希望
Activity 2
仍在运行,因此您应该使用
FLAG\u Activity\u CLEAR\u TOP
,这样中间的所有内容都将关闭

简言之:不,您的代码片段将把
Login
的新实例推到活动堆栈上。请在developer.android.com上的文章中阅读更多关于活动堆栈行为的信息

因为如果您的 应用程序允许用户从多个位置启动特定活动 一个活动,创建并弹出该活动的新实例 到堆栈上(而不是将 活动到顶部)。因此,应用程序中的一个活动可能会 可以多次实例化(即使来自不同的任务),如图所示 如图3所示

图3:

下面给出了一个可能的解决方案。您可以在意图中添加一个,指定在堆栈上已经存在活动的情况下Android应该做什么。我想说,
FLAG\u ACTIVITY\u REORDER\u TO\u FRONT
FLAG\u ACTIVITY\u CLEAR\u TOP
可能是您想要的,但一定要浏览其他选项,因为可能有一个更适合您的需要


或者,如果应用程序中的流允许,如果用户离开,您可以完成活动。例如,在您的示例中:如果用户从活动2导航到活动3,请完成活动2。从#3按后退按钮将显示活动#1,因为该活动将位于堆栈顶部。

简言之:否,您的代码片段将把
登录的新实例推送到活动堆栈上。请在developer.android.com上的文章中阅读更多关于活动堆栈行为的信息

因为如果您的 应用程序允许用户从多个位置启动特定活动 一个活动,创建并弹出该活动的新实例 到堆栈上(而不是将 活动到顶部)。因此,应用程序中的一个活动可能会 可以多次实例化(即使来自不同的任务),如图所示 如图3所示

图3:

下面给出了一个可能的解决方案。您可以在意图中添加一个,指定在堆栈上已经存在活动的情况下Android应该做什么。我想说,
FLAG\u ACTIVITY\u REORDER\u TO\u FRONT
FLAG\u ACTIVITY\u CLEAR\u TOP
可能是您想要的,但一定要浏览其他选项,因为可能有一个更适合您的需要

或者,如果应用程序中的流允许,如果用户离开,您可以完成活动。例如,在您的示例中:如果用户从活动2导航到活动3,请完成活动2。从#3按下后退按钮将显示活动#1,因为该活动将位于堆栈顶部

可以调用上面的代码吗?它是否从th获得活动 堆栈,还是创建新活动?如果没有,我如何获得活动 从堆栈中

答案。如果您使用此代码,将在堆栈上创建您的第一个活动的另一个实例,不,这是不正常的。


嗯。以下是基于上述示例的答案:

我建议您使用
startActivityForResult()
从活动1调用活动2

这里,活动2将作为子活动…当它成功完成任务时,您可以在第二个活动中设置结果并调用
finish()

但在
finish()
之前,请添加如下布尔值:

 i.putExtra("passed2nd", true);
这将表明用户已经完成了第二个活动

现在,您应该在第一个活动中覆盖,
onActivityResult()