Android正确使用布尔值

时间:2014-05-23 16:48:17

标签: java android

我在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.setBackgroundsetBackground,无论是否(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

的同时解决此问题

提前致谢

2 个答案:

答案 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;声明,因为它代表真值或假值。