Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓if语句onClick不做任何事情_Java_Android_Onclick - Fatal编程技术网

Java 安卓if语句onClick不做任何事情

Java 安卓if语句onClick不做任何事情,java,android,onclick,Java,Android,Onclick,我有一个Android测试应用程序(因为我是Android开发新手),其中有两个onClick秘密可以改变屏幕,特别是两个不起作用的。您必须找到并单击第一个,才能访问另一个。在我添加这个系统之前,这两个秘密都起作用了,并且成功地进行了更改,没有出现任何问题 我的目标是防止人们在触发第一种方法之前触发第二种方法。当第一个方法被触发时,应用程序允许触发第二个方法 相关Java代码: private boolean colorChangable = false; public void change

我有一个Android测试应用程序(因为我是Android开发新手),其中有两个
onClick
秘密可以改变屏幕,特别是两个不起作用的。您必须找到并单击第一个,才能访问另一个。在我添加这个系统之前,这两个秘密都起作用了,并且成功地进行了更改,没有出现任何问题

我的目标是防止人们在触发第一种方法之前触发第二种方法。当第一个方法被触发时,应用程序允许触发第二个方法

相关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.p.S.这不同于关于onClick不触发的其他问题,因为在这个问题中,onClick在没有布尔确认的情况下触发


正在执行第二种方法
changeColor
,而无需执行第一种方法
changeSecret
。但是请注意
if(可更改颜色)
。当
colorChanged
变量默认为
false
时,此行避免了要执行的其余方法:

private boolean colorChangable = false;
因此,在执行第一个方法
changeSecret
之前,将为false

我建议添加一个else来查看正在发生的事情,或者解释在每种情况下您想要实现的目标:

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.");
 }

只需在代码中添加一行即可

 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
    }

对不起,但是改变屏幕对我来说没什么意义。。。在答案中,你可以找到正在发生的事情的解释和可能的解决方案,解释更多你想要实现的目标,我会改变我的答案。。。或者简单地检查它并适应你想要的行为…:)希望帮助我解释我想在问题中做什么。再一次。。。。我真的很抱歉,但我不明白你想做什么。。。你想知道发生了什么?在我的答案中找到它。。。。你想有不同的行为?请详细解释一下。。。。不您的代码必须按照您描述的那样工作,所以问题不在这里。。。也。。。不工作不是一种行为。。。你必须把你的日志、控制台错误、调试结果或任何其他真正有用的信息放在上面,特别要说的是,2不起作用的是你的感知,它起作用了,但没有按照你的预期表现……什么是
Changable
的意思?!这只是一个无用的变量名,不必担心:)但是。。。除了使用这样一个混乱的逻辑,难道你不能在点击第一个按钮之前一直禁用第二个按钮吗?在第一个单击处理程序中的操作结束时,启用第二个按钮,仅此而已。清洁的容易的。有效。第二个“按钮”是文本视图,它必须一直在那里。抱歉,这没有什么区别,我测试了它,但感谢您的尝试:)