我有一个Android测试应用程序(因为我是Android开发的新手),其中有几个onClick
秘密可以改变屏幕,特别是2个不会工作的人。您必须找到并单击第一个才能访问另一个。在我添加这个系统之前,两个秘密都有效,并且成功地完成了更改,没有任何问题。
我的目标是阻止人们在触发第一个方法之前触发第二个方法。当第一个触发时,应用程序允许触发第二个方法。
相关的Java代码:
private boolean colorChangable = false;
public void changeSecret(View v) {
Button btn = (Button) findViewById(R.id.button);
btn.setText("Your mind has been blown!");
btn.setTextColor(Color.BLUE);
colorChangable = true;
}
public void changeColor(View v) {
if (colorChangable){
TextView tw = (TextView) findViewById(R.id.textView);
tw.setTextColor(Color.RED);
tw.setText("Again, your mind has been blown.");
}
}
我的相关XML代码:
<TextView
android:id="@+id/textView"
android:onClick="changeColor" />
<Button
android:id="@+id/button"
android:onClick="changeSecret" />
我的代码出了什么问题,有什么我可以改进的吗?
P.S。我在代码中删除了一些无用的部分,如果还有别的东西的话 回答这个问题很重要,请通知我。
P.P.S。这与onClick没有触发的其他问题不同,因为在这个问题中,onClick会在没有布尔确认的情况下触发
答案 0 :(得分:0)
第二种方法changeColor
正在执行,无需执行第一种方法changeSecret
。但请注意if (colorChangable)
。默认情况下,此行避免在colorChangeable
变量为false
时执行其余方法:
private boolean colorChangable = false;
在执行第一个方法changeSecret
之前,这将是假的......
我建议添加其他内容以查看正在发生的事情或解释您希望在每种情况下实现的目标:
public void changeColor(View v) {
TextView tw = (TextView) findViewById(R.id.textView);
if (colorChangable){
tw.setTextColor(Color.RED);
tw.setText("Again, your mind has been blown.");
} else {
tw.setText("You cannot change color.");
}
答案 1 :(得分:0)
只需在代码中添加一行
即可 if (colorChangable){
TextView tw = (TextView) findViewById(R.id.textView);
tw.setTextColor(Color.RED);
tw.setText("Again, your mind has been blown.");
colorChangable=false //add this line
}