我的应用中有两个活动,一个是“主要”和一个“提示”活动。从主活动中ActionBar上的按钮调用Prompt,Prompt有几个EditText对象和一个Spinner。提示还有一个按钮,按下该按钮时,应验证这些对象中的值,然后将它们发送回主活动。
我知道您可以将此信息作为Bundle发送,方法是将其放在Intent中并调用StartActivity。但是,如果我理解Activity生命周期,执行startActivity()调用以启动Main Activity将使旧版本的Main保留在backstack上并占用不需要的资源,并使用户可以“清除”回来提示然后再到旧的主要活动。
我希望从Backstack中删除旧的Main活动以及Prompt活动,同时将值从Prompt的字段发送到新的Main活动。任何人都可以帮我找到最理想的方法吗?
谢谢!
答案 0 :(得分:1)
执行此操作的最佳方法是使用Prompt
启动startActivityForResult()
,然后将值返回onActivityResult()
Docs示例
如果由于某些原因这对您不起作用,那么您可能会找到一个Intent flag
,它将根据您的具体情况完成您的需要。一个可能适合你的是FLAG_ACTIVITY_REORDER_TO_FRONT这会将你的MainActivity
带到堆栈顶部
此外,只要您在致电finish()
后致电PromptActivity
startActivity
,就会从堆栈中清除
你应该看Google I/O Navigation。它解释了导航以及堆栈如何运作良好