我在android中使用booleans
时遇到了一个奇怪的问题。我首先定义布尔值,但是当我使用它时,它不会返回正确的值。请使用以下代码:
public class Prompt3 extends Activity {
boolean item1connect;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prompt3);
touchLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
if (Math.abs(startcoordinatesX - itemvar1x)<touchAllowance && Math.abs(startcoordinatesY - itemvar1y)<touchAllowance) {
item1connect = true;
}
if (item1connect = true) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard));
}
}
}
});
}
当我执行上述操作时,indic1.setBackground
将setBackground
,无论是否(Math.abs(startcoordinatesX - itemvar1x)<touchAllowance && Math.abs(startcoordinatesY - itemvar1y)<touchAllowance)
。但是,当我尝试
if (Math.abs(startcoordinatesX - itemvar1x)<touchAllowance && Math.abs(startcoordinatesY - itemvar1y)<touchAllowance) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard);
}
并完全绕过boolean
item1connect
,代码运行正常。如何在包含boolean
?
提前致谢
答案 0 :(得分:4)
你写了
if (item1connect = true) {...}
这是一项任务,而非比较。此作业的返回值为true
,因此看起来它不起作用。只需写下
if (item1connect == true) {...}
甚至,简单地
if (item1connect) {...}
答案 1 :(得分:1)
您正在做的是告诉itemiconnect将其值设置为true
。使用==
运算符来比较某个项目是真还是假,或者只是将itemiconnect
放入括号内,它会检查您。
编辑: 您的代码所在的位置
if (item1connect = true) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard));
}
您可以将其更改为比较器
if (item1connect == true) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard));
}
或更好,只需使用隐含的真实功能
if (item1connect) {
indic1.setBackground(getResources().getDrawable(R.drawable.ring_filled_standard));
}
Java允许您简单地在&#34中调用您的布尔值;如果&#34;声明,因为它代表真值或假值。