Android,finish()ing

时间:2011-09-09 02:46:34

标签: android

我正在创建一个简单的应用程序来同时学习Android,我非常喜欢新手。

到目前为止,这就是我所拥有的:

应用程序打开到levels.java,其中有8个按钮(在xml文件中),单击按钮8时,我有以下代码:

public void button_clicked8(View v) {
        startActivity(new Intent(this, GameScreen.class));
}

启动我的游戏屏幕活动,玩完简单的加法游戏后,我有一个按钮,上面写着“结束”,里面调用了一个finish()的函数,它还设置了一个变量gameover=true;,这让我回到了levels.java

但是如果我再次按下按钮8,它会将我发送到Gamescreen,但我发现仍然设置了gameover=true; :(

为什么?如何开始“新鲜”活动?

谢谢!

6 个答案:

答案 0 :(得分:1)

我建议你read my answer to another mildly similar question。基本上,完成与用户按下后退按钮完全相同。作为开发人员,您或多或少可以根据用户的交互(即通过意图)来更改状态。

例如,您可以执行以下操作...

Intent intent = new Intent();
Bundle bun    = new Bundle();

bun.putBoolean("newGame", true);

intent.setClass(this, GameActivity.class);
intent.putExtras(bun);
startActivity(intent); 

答案 1 :(得分:1)

我猜你不想在gameOver为真时启动游戏画面

 public void button_clicked8(View v) {
            if(gameOver) return;
            startActivity(new Intent(this, GameScreen.class));
    }

答案 2 :(得分:1)

启动Activity时使用标记for intent。

答案 3 :(得分:0)

如何在GameScreen的gameover方法中重置onCreate()值?

答案 4 :(得分:0)

请阅读有关活动生命周期here的信息,并且在设置gameover变量时,另一种存储值的方法是使用SharedPreferences。这样做:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("gameover", true);
editor.commit();

并阅读你的价值,这样做:

Boolean gameOver = sharedPreferences.getBoolean("gameover", true);

通过这样做,您将永久设置您的价值,而不必担心活动生命周期事件。

答案 5 :(得分:0)

u can declare a static boolean variable gameOver in levels.java.

你可以在GameScreen.java中点击结束按钮进行修改。 当完成被调用时,所有d变量被破坏。 你可以覆盖GameScreen.java的onCreate(),onResume(),onDestroy(),onStart(),onPause(),onStop()来处理你的变量