如何从堆叠中多个远离的另一个活动返回到我的主要活动?

DuF*_*F14 0 android nullpointerexception activity-stack android-intent

我有一个主菜单活动,有一堆按钮.一个按钮启动一个新活动,允许用户填写并提交表单.当用户提交表单时,第三个活动开始,基本上只是一个包含一些内容的屏幕和一个返回主菜单的按钮.但是,当我创建一个intent并转到main活动时,setContentView()不起作用,我的按钮赋值会导致NullPointerException.

我知道有一些方法可以通过意图标志或调用finish()返回堆栈.我没有成功的意图标志,如Intent.FLAG_ACTIVITY_CLEAR_TOP.完成()将无法工作,因为我是两个活动,而不是一个.回到主要活动的正确方法是什么?

谢谢

Mat*_*vis 6

有很多方法可以做到这一点.最简单的可能是在启动意图后调用第二个活动上的finish(),如下所示:

startActivity(activity3intent);
finish();
Run Code Online (Sandbox Code Playgroud)

当第三个活动开始时,这将从堆栈中删除第二个活动.然后,您的MainMenu按钮可以在第三个活动上调用完成,返回第一个活动.

如果您更喜欢使用Intent Flags,请尝试将其添加到从活动3调用活动1的Intent:

activity1intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)

这将使活动1重新聚焦并清除堆栈上方的任何内容.CLEAR_TOP标志处理除掉堆栈的其余部分,但是如果它已经存在于堆栈中,IIRC将不会启动Activity的新实例.如果您更愿意启动活动1的新实例,请不要使用任何标志,但在活动2和3都发送了意图后调用finish(),以便无法通过后退导航访问它们.