user2567654
user2567654

Reputation: 1

Does not display in EditText

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

Answers (6)

s.d
s.d

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

Raghunandan
Raghunandan

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

user1555863
user1555863

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

yushulx
yushulx

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

Nargis
Nargis

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

VM4
VM4

Reputation: 6501

You have to put the num1 = Float.valueOf(edt2.getText().toString()); into the onClick() method (same for num2).

Upvotes: 2

Related Questions