java全局varibales无法更改android studio

时间:2016-03-13 15:58:34

标签: java android boolean

我不知道我是否正确地做了这个,我制作了一个java文件var.java

public class var {
   public  static  boolean u = true ;
}

在我的主要活动中

buUn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        //var.u = !var.u ;
        if (var.u = true) {
            var.u = false;
        } else {
            var.u = true  ;
        }

        if (var.u = false){
            txtx.setText("1");
        } else {
            txtx.setText("2");
        }
    }
});

u总是true无论如何,txtx文字都是2,即使ivar.java中的值更改为false } 继续2

4 个答案:

答案 0 :(得分:2)

您错误地检查了您的情况。将布尔值与==运算符进行比较。不是使用单个=来声明值。所以请记住:

  • =作业
  • ==比较

这是正确的代码:

if (var.u == true) {
   var.u = false;
} else {
   var.u = true;
}

if (var.u == false) {
   txtx.setText("1");
} else {
   txtx.setText("2");
}

为了缩短它,您可以使用!作为否定运算符,意思是

if (var.u) {
   var.u = false;
} else {
   var.u = true;
}

if (!var.u) {
   txtx.setText("1");
} else {
   txtx.setText("2");
}

最后为了尽可能地缩短它,试试这个:

var.u = !var.u;
var.u ? txtx.setText("2") : txtx.setText("1");

答案 1 :(得分:0)

Java中的比较器使用==

像那样:

     //  var.u = !var.u ;
        if (var.u == true){
            var.u = false ;
        }else {
            var.u = true  ;
        }


        if (var.u == false){
            txtx.setText("1");

        } else {
            txtx.setText("2");
            }
    }

答案 2 :(得分:0)

尝试这个>>

  

实际上if (var.u = true)此行存在问题。您没有使用Relation(==)运算符。而不是你正在做的是每次执行此行时使用分配=),true被分配给变量var.u

解决方案:>

             if (var.u) //its a boolean so no need to use Relational Operatior
                var.u = false ;
             else
                var.u = true  ;
             if (!var.u)   // !(not) Operator will check if it is false.
                txtx.setText("1");
             else 
                txtx.setText("2");

答案 3 :(得分:0)

代替var类中的公共静态变量,可以使int为private和non static,并添加getter和setter,并且在var类的构造函数中,您可以将该变量初始化为true,以便在创建实例时你将把u的值变为真。

在你的情况下,问题在于比较,你不会问这个值是否为真,但是你告诉它该值是真的:

if(var.u = true){ 需要: if(var.u == true){