【发布时间】:2016-10-23 10:56:26
【问题描述】:
我正在开发一个小应用程序,我一直在做最后的润色,但遇到了一个我似乎无法解决的逻辑问题。
我有一个函数:
public void quitOrStartGame(View view){
Button quitStart = (Button)findViewById(R.id.quit_startButton);
Button reset = (Button)findViewById(R.id.resetButton);
reset.setClickable(false);
if (quitStart.getText() == "Quit") {
gridGame.quit();
importGrid();
quitStart.setText("Start");
reset.setClickable(false);
}
else {
gridGame.startGame();
importGrid();
quitStart.setText("Quit");
reset.setClickable(true);
}
}
这是为了启动我的游戏而设计的。这是一个 5x5 的游戏,有 x 和 o 的作业,对于我的问题来说,作业的意义并不重要。
我想要完成的是,当您第一次打开应用程序时,您会看到两个按钮,一个是重置按钮,一个是启动按钮。当您按下开始时,它开始游戏,按钮变为退出按钮,这将停止游戏运行。
问题是,我不希望在按下开始按钮之前可以点击重置按钮,目前这不会发生。甚至在按下启动之前,重置按钮都会发挥其正常功能。
但是: 当您按下开始,然后最终退出时,这确实会禁用重置按钮,但该过程必须首先发生。我想要的是在按下开始之前禁用重置按钮,然后在按下退出后的一段时间内再次禁用。
我希望我能很好地解释这个问题,提前感谢各位好心人提供的任何帮助!
【问题讨论】:
-
没有阅读整个问题,但关于
if (quitStart.getText() == "Quit") {看看:How do I compare strings in Java? -
无论出于何种原因在 android studio 中这行得通,我知道我也认为这很奇怪,但如果你不介意你能阅读实际的问题吗?如果不是,请不要评论说“我没有阅读您的要求,但您在这里错了”的帖子。这对任何人都没有帮助。
-
我不是安卓开发者。我什至没有安装它,所以我怀疑我能否快速发现您的问题。
== "..."是 Java 中的标准代码气味,所以我指出了这一点。如果您比较像"foo" == "foo"这样的字符串文字,它可能会起作用,因为它们存储在字符串池中。我假设getText()返回new String(...)所以通过==比较它不应该工作,除非该方法也在池中实习返回的字符串。 -
再一次,不是问题,它正在工作。感谢您的“回答”,但这无助于解决实际问题。老实说,这个问题并不真正取决于android知识,但是你又没读过它,你怎么知道?
标签: java android button logic reset