Java Android中的活动
关于Android应用程序中的活动,我有一个相当简单的问题。我还是个新手 在我目前的android应用程序中,我有大约10项活动。如果其中一个活动已经位于活动堆栈的后面,并且我想重新打开它,可以调用: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。可以调用上面的代码吗?它是从堆栈中获
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()