2017-04-03 77 views
-7

当用户按下按钮1时,我的布局中有2个按钮,'number'的值应该变为'2',而当用户按下按钮2时,'number'的值应该会改变到'1',但价值不变。 这里是我的代码:在OnClick Android上更改变量的值

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)); 

    } 

    }); 

    } 


    } 

Log.e输出

 E/number value :: 2
当我按下BTN1但是当我按下BTN2什么也没有发生,只有BTN1工作

+0

欢迎的StackOverflow!请阅读用户指南,了解如何在发布问题前提出一个好问题(http://stackoverflow.com/help/how-to-ask)谢谢 –

回答

0

尝试这个

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

} 
+0

This works !.但是,你能解释为什么它不适用于if条件吗? –

0

试试这个

@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)); 
    } 

    }); 
} 
1

的这部分你代码根本不叫:

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

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

    } 

    }); 

T他的理由是条件if(number==2),因为数字实际上是1,所以这块代码不会被调用,所以没有点击监听添加到btn2

onCreate中设置点击监听器,它将完美工作。

0

试试这个

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));  

     }  

}