2012-12-05 24 views
3

我是一个初学者的Android程序员,我似乎有一个问题: 我打开新activitys,与机器人 - 结束()关闭应用程序,而不是活性

Intent newGameIntent = new Intent(actionName); 
startActivity(newGameIntent); 

和万物正常工作时,活动开始。 但是当我打电话完成()它不去往previus活动,它只是关闭应用程序(没有错误或其他日志messeges)

有没有人有一个想法,为什么发生? 感谢您的时间!

的要求,这里是更多的代码(那我可能已经完全screwd了的东西): 第一个活动:

@Override 
protected void onStop() { 
    super.onStop(); 
    SplashScreen.sounds.releasSounds(); 
    finish(); 
} 
@Override 
protected void onPause() { 
    super.onPause(); 
    pauseActivity(); 
} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    gameLoop.resumeThread(); 
    SplashScreen.sounds.resumeSounds(); 
} 

private void pauseActivity() { 
    gameLoop.pauseThread(); 
    SplashScreen.sounds.pauseBck(); 
} 

和第一个活动调用秒活动

Intent newGameIntent = new Intent("com.YuvalApps.menus.NEWGAMEMENU"); 
    startActivity(newGameIntent); 

并为秒活动

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    finish(); 

} 
+0

堆栈中是否还有其他活动? – Atrix1987

+0

你是什么意思?新活动有可能覆盖前一个吗? – Yuval3210

+1

你应该看看这个:http://developer.android.com/guide/components/tasks-and-back-stack.html – Slickelito

回答

1

当一个活动在后台时,android系统将调用“onStop”方法,但是您在方法“onStop”中调用方法“finish”,因此如果跳转到另一个活动,上一个活动将被“的onStop”。 您应该在“onStop”方法中删除“完成”。

+0

哇,非常感谢!不能相信我是那么愚蠢。猜猜我还没有完全理解活动的生命周期 – Yuval3210

-1

如果您呼叫完成()关闭当前活动并返回到前一个活动,只需调用onBackPressed()而不是finish(),它将返回到上一个活动。

+0

如果您看到源代码,您会发现,onBackPressed只需调用finish()。这是有道理的 - >从活动堆栈弹出一个项目 – Atrix1987

+0

仍然关闭应用程序...我不认为完成()是我的问题,因为当我在我的第二个活动,(没有关闭我的第一个,只是打开第二个)我按后退按钮它关闭应用程序,并不返回到第一个活动 – Yuval3210

+0

您可以添加任何活动的代码,以便我们可以找到该错误? – viks

相关问题