2011-12-15 48 views
0

我有一个活动A,它以一个意图启动B。 (B是MapActivity,并有一些异步代码)即使我在BackButton上调用FINISH,Android仍会恢复我的活动

在乙

我有以下代码

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 
if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
//   Log.d(this.getClass().getName(), "back button pressed"); 

    finish(); 
    return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

这根本不起作用。我的意思是,当我按下手机上的后退按钮时,当前活动B将消失,并显示启动B的活动A.

如果我再按一次启动B的按钮,我会看到B正好是我关闭它时的样子。文本框中的相同文本,相同的地图位置......所以我认为活动B并没有真正关闭。

我怎样才能关闭它,所以当我再次启动它时,活动B就像新生儿一样清澈?

编辑:只是为了使问题更清楚: 我希望它的工作是这样的:当用户在活动B和BACK按钮被按下,B必须被关闭和销毁。当用户再次从A启动B时,B必须作为NEW活动启动,具有空白字段,重置地图等,...就像用户首次从A启动B一样。

+0

请在onCreate/onPostCreate/onResume上显示活动B,以及如何从A – logcat 2011-12-15 19:35:31

回答

0

正如我在我的帖子最后评论说,@Jianhong给了我正确的答案(aslso如果作为一条评论)。由于他没有及时将评论复制为答案,我添加了该答案并将其标记为“已接受”。谢谢@Jianhong!

回答: @Jianhong OMG!你完全正确!我在过去几天检查了这个问题,但我无法找到它...我没有从SVN更新过。我的同事通过一些静态变量插入预填字段的代码行!

0

您是否尝试过通过调用A中的startActivityForResult()来激活B?

在B中进行所有处理,然后确保您完成处理并清除其中的所有数据。

请让我知道它是否有效。

0

很明显。 OnSaveState在完成活动时被调用,并且此活动从堆栈中弹出。要清除这种情况,最佳做法是在两个活动中记录所有生命周期事件,这将有助于确定将B活动初始化的位置。

是的,还有一件事尝试研究onNewIntent在B活性的方法,我想这将是真正的帮助

相关问题