Ошибка при нажатии на Button
Еще раз здравствуйте, создал я калькулятор, но при нажатии на любую из операций * / - + два раза, например запустили и сразу нажали два раза на плюс, выскакивает ошибка и выкидывает из приложения, в чем дело?
MainActivity.class
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends ActionBarActivity {
EditText editText;
private float NumberBf;
private String Operation;
private List<Button> buttons;
private static final int[] idList = {R.id.button0, R.id.button1, R.id.button2, R.id.button3,
R.id.button4, R.id.button5, R.id.button6, R.id.button7,
R.id.button8, R.id.button9, R.id.buttonPluss, R.id.buttonClear,
R.id.buttonDilenie, R.id.buttonTochka, R.id.buttonRavno,
R.id.buttonYmnog, R.id.buttonMinus};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.editText);
editText.setEnabled(false);
buttons = new ArrayList<Button>();
for(int id : idList){
Button button = (Button) findViewById(id);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.buttonClear: //clear screen
editText.setText("0");
NumberBf = 0;
Operation = "";
break;
case R.id.buttonPluss: //function Add
mMath("+");
break;
case R.id.buttonMinus:
mMath("-");
break;
case R.id.buttonYmnog:
mMath("*");
break;
case R.id.buttonDilenie:
mMath("/");
break;
case R.id.buttonRavno:
mResult();
break;
default:
String numb = ((Button) view).getText().toString();
getKeyboard(numb);
break;
}
}
});
}
}
public void getKeyboard(String str){
String ScrCurrent = editText.getText().toString();
if(ScrCurrent.equals("0")){
ScrCurrent = "";
}
ScrCurrent += str;
editText.setText(ScrCurrent);
//Toast.makeText(getApplicationContext(), "LOL", Toast.LENGTH_SHORT).show();
}
public void mResult(){
float NumAf = Float.parseFloat(editText.getText().toString());
float result = 0;
if(Operation.equals("+")){
result = NumAf + NumberBf;
}
if(Operation.equals("-")){
result = NumberBf - NumAf;
}
if(Operation.equals("*")){
result = NumAf * NumberBf;
}
if(Operation.equals("/")){
result = NumberBf / NumAf;
}
editText.setText(String.valueOf(result));
}
public void mMath(String str){
NumberBf = Float.parseFloat(editText.getText().toString()); // save the screen
Operation = str; //save operation
editText.setText(""); //clear screen
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Источник: Stack Overflow на русском