从android中删除堆栈中的活动

Zac*_*ach 4 java android activity-stack android-activity

我想使用code从堆栈中删除一个活动.这是我的情况

  1. 从页面AI到第B页.
  2. 从页面B我必须使用返回按钮返回页面A.
  3. 在页面BI中有一个按钮到页面C.
  4. 当我点击页面B中的那个按钮时,我正在打电话
finish(); //to remove PageB from stack
Run Code Online (Sandbox Code Playgroud)

好的,这是问题,当我点击返回按钮时,从页面C我被带到页面A.因为它在堆栈中.

当我单击页面B中的按钮时,我想从堆栈中删除页面A.

请注意,在调用页面B时我无法在页面A中调用finish(),因为我想返回到页面A.只有在我点击页面B中的按钮时我不想返回的情况.

我怎么能在android中做到这一点?谢谢

Ben*_*orf 5

startActivity当你开始B时,不要打电话给A,而是打电话startActivityForResult.然后,你的A活动,处理onActivityResult.

现在,在B中,当你打开C时,setResult在调用完成之前调用.这将允许您设置一些数据以传递回A的onActivityResult方法.传递一个标志,表示A应该关闭,然后调用finish.处理A中的那面旗帜onActivityResult.

这样,每个活动都有责任自行关闭,而且你不会人为地弄乱后台.使用意图标记在简单的A,B,C情况下工作正常,但如果这3个屏幕是更大解决方案的一部分,则可能会分崩离析(即A,B和C深入到您不想要的一堆活动中一塌糊涂).