Не выводит на экран результат

Ответить
Alkcatras
Сообщения: 1
Зарегистрирован: 24 июл 2013, 16:14

Не выводит на экран результат

Сообщение Alkcatras » 24 июл 2013, 16:26

Здравствуйте, делал 19 урок из сборника уроков сайта, нужно сделать калькулятор, сделал всё по уроку, всё работает,решил добавить кнопку "=".При нажатии на эту кнопку результат не выводится

вот листинг

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

etNum1=(EditText) findViewById(R.id.etNum1);
etNum2=(EditText) findViewById(R.id.etNum2);
btnAdd=(Button) findViewById(R.id.btnAdd);
btnSub=(Button) findViewById(R.id.btnSub);
btnDiv=(Button) findViewById(R.id.btnDiv);
btnMult=(Button) findViewById(R.id.btnMult);
tvResult=(TextView) findViewById(R.id.tvResult);
rovno=(Button) findViewById(R.id.rovno);

btnAdd.setOnClickListener(this);
btnSub.setOnClickListener(this);
btnDiv.setOnClickListener(this);
btnMult.setOnClickListener(this);
rovno.setOnClickListener(this);


}

@Override
public void onClick(View v){

float num1=0;
float num2=0;
float result=0;

if (TextUtils.isEmpty(etNum1.getText().toString())|| TextUtils.isEmpty(etNum2.getText().toString())){
return;
}

num1=Float.parseFloat(etNum1.getText().toString());
num2=Float.parseFloat(etNum2.getText().toString());

switch (v.getId()){
case R.id.btnAdd:
oper="+";
result=num1+num2;
break;
case R.id.btnDiv:
oper="/";
result=num1/num2;
break;
case R.id.btnMult:
oper="*";
result=num1*num2;
break;
case R.id.btnSub:
oper="-";
result=num1-num2;
break;
case R.id.rovno:
tvResult.setText(num1+""+oper+""+num2+"="+result);
break;

default:
break;

}

tvResult.setText(num1+""+oper+""+num2+"="+result);
выводит только 1-е число, знак операции, 2-е число, знак =.
а там где result выводит 0,0.
Если написать tvResult.setText(num1+""+oper+""+num2+"="+result); после Switch всё выводит правильно.
как сделать чтобы выводила по нажатию на кнопку.
И если не сложно объясните в чём моя ошибка.Спасибо.

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

Re: Не выводит на экран результат

Сообщение xr0m » 24 июл 2013, 17:29

каждый твой клик обнуляет твою локальную переменную float result=0; В твоем случае, можешь вынести её в переменные класса.

Ответить