Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.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
Android 从另一个活动中清除堆栈中的活动_Android_Android Activity_Stack - Fatal编程技术网

Android 从另一个活动中清除堆栈中的活动

Android 从另一个活动中清除堆栈中的活动,android,android-activity,stack,Android,Android Activity,Stack,我有启动屏幕,这是我在应用程序中的第一个活动 此活动仅包含一个按钮,单击该按钮时,应导航到另一个活动,该活动应提示用户输入名称 如果用户在确认名称之前按“后退”按钮,则应导航回上一个活动 但当用户确认名称时,应弹出主活动,并从应用程序中删除已放弃的活动 我正在寻找一个解决方案,并在创建静态活动对象时找到了它,但我发现这并不明智,而且对内存有害 做我解释的事情的最佳方法是什么?您好,这可能会有帮助,请检查一下 在“用户名活动”中实现这一点 试试这个: 在哪个活动处执行此代码以清除其他堆栈活动 In

我有启动屏幕,这是我在应用程序中的第一个活动

此活动仅包含一个按钮,单击该按钮时,应导航到另一个活动,该活动应提示用户输入名称

如果用户在确认名称之前按“后退”按钮,则应导航回上一个活动

但当用户确认名称时,应弹出主活动,并从应用程序中删除已放弃的活动

我正在寻找一个解决方案,并在创建静态活动对象时找到了它,但我发现这并不明智,而且对内存有害


做我解释的事情的最佳方法是什么?

您好,这可能会有帮助,请检查一下

在“用户名活动”中实现这一点 试试这个:

在哪个活动处执行此代码以清除其他堆栈活动

Intent intent = new Intent(this, newActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
this.startActivity(intent);

我希望这对您有所帮助

第一个
活动
应该使用
startActivityForResult()
调用第二个
活动
。在第一个
活动中
执行
onActivityResult()
,如下所示:

  • 如果
    resultCode
    已取消
    RESULT\u
    ,则用户已单击后退键,因此无需执行任何操作

  • 如果
    resultCode
    RESULT\u OK
    ,则用户输入其用户名,您可以启动主
    活动
    并调用
    finish()
    。这将从堆栈中删除第一个
    活动

第二个
活动
应调用
setResult(RESULT\u OK)
,然后在用户确认其用户名后调用
finish()
。这将结束第二个
活动
,并通过调用
onActivityResult()
返回到第一个
活动

注:
第二个
活动
可以将数据(如输入的用户名或任何内容)作为
意图
中的“附加项”返回给第一个
活动,并传递给
setResult()

为什么不清理活动堆栈并启动一个新的main活动,如:?在实现时,在确认名称后,在加载mainActivity之前,我会在一秒钟内看到白色的scsreen。请在后台进程中运行此操作,使用clear stack activity的目的是什么-这取决于如何完成
Intent intent = new Intent(this, newActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
this.startActivity(intent);