Android:你如何从setContentView返回?

时间:2011-09-14 02:08:44

标签: android view android-activity android-intent

例如,当我启动一个新的Activity时,我可以使用finish()返回上一个活动。如何从设置内容视图返回?如

setContentView(new example(context));

现在我在表面上看。我问的原因是因为目前当我从表面视图按下后退按钮时它完全退出游戏。 (我使用super.OnDestroy的onDestroy方法)

我的表面视图有一个surfaceDestroyed方法,它将游戏循环线程设置为false,就是这样。我假设我需要在这里做点什么来告诉它将其内容视图切换回我的菜单?

如果我弄错了这些事情的背景或只是听起来很愚蠢,请告诉我关于事情如何运作的正确理念。 :d

感谢!!!

3 个答案:

答案 0 :(得分:1)

您始终处于活动范围内。因此,即使您正在显示SurfaceView,SurfaceView也包含在Activity中。如果应用程序堆栈中当前没有活动,则后退按钮将退出您的应用程序。您可以通过覆盖活动中的onKeyDown来显式处理后退按钮,以执行您自己的条件逻辑。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // This is a method I created in my Activity to execute my custom logic
        // related to the user pressing the back button
        return handleBackButton(keyCode, event);
    }
    return super.onKeyDown(keyCode, event);
}

onBackPressed中定义了一个Activity方法,但这是在api级别5中引入的,所以如果你支持Android 1.6(api 4),你需要做onKeyDown

答案 1 :(得分:1)

最好的方法是使用意图。

startActivity(new Intent(this, ClassYouWantToReturn.class));

setContentView()不会有太大的帮助,因为你会丢失数据。

答案 2 :(得分:0)

我是新人,只是在学习自己,如果我错过了什么,请原谅我。但是你不能使用一个布尔变量来根据它的状态设置内容视图吗?

Boolean sView

if (sView = true){
setContentView(new example(context));
}
if (sView = false){
setContentView(new example(context));
}