在OnClick Android上更改变量的值

在OnClick Android上更改变量的值,android,Android,我的布局中有两个按钮,当用户按下按钮1时,“数字”的值应更改为“2”,当用户按下按钮2时,“数字”的值应更改为“1”。但该值不变。 这是我的密码: public class test extends AppCompatActivity{ public int number ; private Button btn1; private Button btn2; @Override protected void onCreate(Bundle savedInstanceState) {

我的布局中有两个按钮,当用户按下按钮1时,“数字”的值应更改为“2”,当用户按下按钮2时,“数字”的值应更改为“1”。但该值不变。 这是我的密码:

public class test extends AppCompatActivity{

public  int number ;

private Button btn1;
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.testing);

    btn1=(Button)findViewById(R.id.btn1);
    btn2=(Button)findViewById(R.id.btn2);

    test();
}

void test()
{

  if(number<1) {
    number = 1;
    }

        Log.e("number value : ",String.valueOf(number));


    if(number==1)
    {

         btn1.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
          number=2;

             Log.e("number value : ",String.valueOf(number));


         }

    });

    }


     if(number==2)
    {
     btn2.setOnClickListener(new View.OnClickListener() {

         @Override
        public void onClick(View arg0) {
             number=1;
             Log.e("number value : ",String.valueOf(number));

    }

    });

    }


    }
公共类测试扩展了AppCompatActivity{
公共整数;
专用按钮btn1;
专用按钮btn2;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.testing);
btn1=(按钮)findViewById(R.id.btn1);
btn2=(按钮)findViewById(R.id.btn2);
test();
}
无效测试()
{
如果(数字试试这个

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.testing);

    btn1=(Button)findViewById(R.id.btn1);
    btn2=(Button)findViewById(R.id.btn2);
    btn1.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
          number=2;
             Log.e("number value : ",String.valueOf(number));
         }

    });
    btn2.setOnClickListener(new View.OnClickListener() {

         @Override
        public void onClick(View arg0) {
             number=1;
             Log.e("number value : ",String.valueOf(number));
    }

    });
}

这部分代码根本不会被调用:

if(number==2)
    {
     btn2.setOnClickListener(new View.OnClickListener() {

         @Override
        public void onClick(View arg0) {
             number=1;
             Log.e("number value : ",String.valueOf(number));

    }

    });
原因是条件
if(number==2)
因为number实际上是1,所以不会调用此代码块,所以没有添加到
btn2
的单击侦听器

在创建时设置click listener,它将非常有效。

试试这个

void test()
{

  if(number<1) { number = 1; }

  Log.e("number value : ",String.valueOf(number));

  btn1.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View arg0)  {
       if(number == 1)
       {
         number=2;
         Log.e("Button 1 number value : ",String.valueOf(number));
       }
     }
  });

  btn2.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View arg0)  {
       if(number == 2)
       {
         number=1;
         Log.e("Button 2 number value : ",String.valueOf(number));
       }
     }
  });

}
void测试()
{
如果(数字试试这个

 public class test extends AppCompatActivity{

    public  int number ;

    private Button btn1;
    private Button btn2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.testing);

        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);

        test();


         btn1.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
          if(number==1){
          number=2;
            }
             Log.e("number value : ",String.valueOf(number));

         }
    });


     btn2.setOnClickListener(new View.OnClickListener() {

         @Override
        public void onClick(View arg0) {
        if(number==2){
             number=1;
          }
             Log.e("number value : ",String.valueOf(number));

    }

    });


}

    void test()
    {

      if(number<1) {
        number = 1;
        }

            Log.e("number value : ",String.valueOf(number));    

        }    

 }
公共类测试扩展了AppCompatActivity{
公共整数;
专用按钮btn1;
专用按钮btn2;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.testing);
btn1=(按钮)findViewById(R.id.btn1);
btn2=(按钮)findViewById(R.id.btn2);
test();
btn1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
如果(数字==1){
数量=2;
}
Log.e(“数值:”,String.valueOf(number));
}
});
btn2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
如果(数字==2){
数字=1;
}
Log.e(“数值:”,String.valueOf(number));
}
});
}
无效测试()
{

if(numberWelcome to StackOverflow!请阅读用户指南,了解如何在发布问题之前提出一个好的问题(),感谢您的帮助。但是,您能否解释一下为什么if条件不起作用?
 public class test extends AppCompatActivity{

    public  int number ;

    private Button btn1;
    private Button btn2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.testing);

        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);

        test();


         btn1.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View arg0) {
          if(number==1){
          number=2;
            }
             Log.e("number value : ",String.valueOf(number));

         }
    });


     btn2.setOnClickListener(new View.OnClickListener() {

         @Override
        public void onClick(View arg0) {
        if(number==2){
             number=1;
          }
             Log.e("number value : ",String.valueOf(number));

    }

    });


}

    void test()
    {

      if(number<1) {
        number = 1;
        }

            Log.e("number value : ",String.valueOf(number));    

        }    

 }