Reputation: 1
whats wrong with this code. Function accepts two numbers, add them and display result. But the result is not displayed at all. Please help
EditText edt1 = (EditText) findViewById(R.id.display1);
num1 = Float.valueOf(edt1.getText().toString());
EditText edt2 = (EditText)findViewById(R.id.display2);
num2 = Float.valueOf(edt2.getText().toString());
Button calculate=(Button)findViewById(R.id.add);
calculate.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
result=num1+num2;
TextView d3=(TextView)findViewById(R.id.display3);
d3.setText(Float.toString(result));
}
});
Upvotes: 0
Views: 98
Reputation: 29436
Make it like this:
final EditText edt1 = (EditText) findViewById(R.id.display1);
final EditText edt2 = (EditText) findViewById(R.id.display2);
final Button calculate = (Button) findViewById(R.id.add);
final TextView d3 = (TextView) findViewById(R.id.display3);
calculate.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
int num1 = Float.valueOf(edt1.getText().toString());
int num2 = Float.valueOf(edt2.getText().toString());
float result = num1+num2;
d3.setText(Float.toString(result));
}
});
Upvotes: 0
Reputation: 133560
Move this inside on click
num1 = Float.valueOf(edt1.getText().toString());
num2 = Float.valueOf(edt2.getText().toString());
Also move this to onCreate
declare TextView d3 as a class member
d3=(TextView)findViewById(R.id.display3); // no need to initialize everytime on button click
http://developer.android.com/reference/android/app/Activity.html
Upvotes: 0
Reputation: 2607
You are reading the value inside the EditTexts outside of the onClick listener.
And another note: It's a good practice, especially if things don't work as you would expect, to first check if you got the value you were expecting before trying to present it back.
Always check variables values. Ask yourself Is this variable set correctly?
This way you could really close in on the problem yourself. Here, for example:
public void onClick(View v){
Log.d("myApp","num1 is: "+num1);
Log.d("myApp","num2 is: "+num2);
result=num1+num2;
...
}
Upvotes: 1
Reputation: 12140
I think you initialize num1 and num2 in onCreate() method. so you cannot get anything. you have to get num1 and num2 value in onClick(View v). try this
public void onClick(View v)
{
num1 = Float.valueOf(edt1.getText().toString());
num2 = Float.valueOf(edt2.getText().toString());
result=num1+num2;
TextView d3=(TextView)findViewById(R.id.display3);
d3.setText(Float.toString(result));
}
Upvotes: 0
Reputation: 4787
You should put:
getting num1 and num2 code in onClick
And You should not put this code in onClick:
TextView d3=(TextView)findViewById(R.id.display3);
Put this after
Button calculate=(Button)findViewById(R.id.add);
Upvotes: 0
Reputation: 6501
You have to put the num1 = Float.valueOf(edt2.getText().toString()); into the onClick() method (same for num2).
Upvotes: 2