使用多个场景管理后退按钮

时间:2011-10-11 18:17:06

标签: android andengine

我按照本教程http://www.andengine.org/forums/tutorials/multiple-screen-andengine-game-v2-t4755.html创建了一个包含多个场景且只有一个活动的简单应用程序。 我想知道当我在第一个场景中使用后退按钮并完成活动时,我怎么能回到上一个场景。

我在MultiScreen类中尝试过:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        this.mEngine.getScene().back();
    }
    return super.onKeyDown(keyCode, event);
}

core.getEngine().setScene(scene);

替换SceneManager中的this.mEngine.getScene().setChildScene(scene);

场景的工作方式与我的理解方式不同,我决定:

    @Override
    public void onBackPressed()
    {
        Scene scene = this.mEngine.getScene();
        if(scene.hasChildScene()){
            scene.back();
        }
        else{
            this.finish();
        }
    }

2 个答案:

答案 0 :(得分:2)

您可以通过覆盖onBackPressed()方法或dispatchKeyEvent()方法以两种方式之一覆盖返回键

覆盖onBackPressed:

@Override
public void onBackPressed()
{
    // your code here
}

重写dispatchKeyEvent:

@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
        // your code here
    }
    return (yourbooleanhere);
}

答案 1 :(得分:0)

在这个意义上,我有一个像你这样的困境。我解释。我有一个与ViewFlipper一起工作的活动。我需要转到我在ViewFlipper标签上写的不同“布局”,当我在一个特定的“布局”中,这不是活动的主要“布局”时,我需要回到主要按下后退按钮,但是,它无法正常工作。

要解决这个困境,我重写OnBackPressed函数,如:

@Override
public void onBackPressed() {
    if (condition) {
        // go to the main 
    } else {
        super.onBackPressed();
}
}

condition,正如名字所说,你怎么知道你处于主要的“布局”?例如,在我的ViewFlipper中,主“布局”按数字排序,从0开始,所以我的主“布局”为0,我怎么知道我在0“布局”viewflipper.getDisplayedChild()。如果它返回0,我会保持主要的“布局”,否则。

这么简单,但我知道,不是那么优雅。这是一个想法,我认为这可以帮助你。