2017-04-03 103 views
-2

我设置了button1和id按钮,button2设置了button2 id。识别按钮点击

现在,这里是我放在什么将会发生,这是走出去我心中的这个代码和onButtonClick(view v) 下呼吁每个按钮一个switch叙述,但是当我点击任何按钮,同样的事情正在发生或者在此代码除了是发生这两个按钮。

public void onButtonClick(View v) { 


    TextView tx = (TextView) findViewById(R.id.resultT); 
    EditText e1 = (EditText) findViewById(R.id.fNum); 
    EditText e2 = (EditText) findViewById(R.id.sNum); 
    TextView t1 = (TextView) findViewById(R.id.result); 
    Button b1 = (Button) findViewById(R.id.button); 
    Button b2 = (Button) findViewById(R.id.button2); 

    int numF = Integer.parseInt(e1.getText().toString()); 
    int numS = Integer.parseInt(e2.getText().toString()); 
    int sum = numF + numS; 
    int mux = numF * numS; 


    switch (v.getId()) { 
     case R.id.button: { 
      tx.setText(Integer.toString(mux)); 
      t1.setText(Integer.toString(mux)); 
     } 
     case R.id.button2: { 
      tx.setText(Integer.toString(sum)); 
      t1.setText(Integer.toString(sum)); 
     } 
     break; 
     default: 
      throw new RuntimeException("an error has occurred"); 
    } 


} 
} 

回答

1

必须在每个开关的情况下

后添加break语句如果有多个开关的情况下在没有break语句然后休息后一种情况下将此事没有这种情况下执行的行在该序列的案例中匹配。

修改你的开关块,如下所示:

switch (v.getId()) { 
     case R.id.button: 
      tx.setText(Integer.toString(mux)); 
      t1.setText(Integer.toString(mux)); 

     break; 
     case R.id.button2: 
      tx.setText(Integer.toString(sum)); 
      t1.setText(Integer.toString(sum)); 

     break; 
     default: 
      throw new RuntimeException("an error has occurred"); 
    } 
0

情况case R.id.button:这就是为什么case R.id.button2:始终执行后你还没有添加break声明。

更新您的switch-case块如下:

switch (v.getId()) { 
    case R.id.button: { 
     tx.setText(Integer.toString(mux)); 
     t1.setText(Integer.toString(mux)); 
    } 
    break; 
    case R.id.button2: { 
     tx.setText(Integer.toString(sum)); 
     t1.setText(Integer.toString(sum)); 
    } 
    break; 
    default: 
     throw new RuntimeException("an error has occurred"); 
}