不在EditText中显示

时间:2013-07-10 08:38:31

标签: android android-edittext

这段代码有什么问题。函数接受两个数字,添加它们并显示结果。但结果根本没有显示。请帮忙

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));              
     }
});

6 个答案:

答案 0 :(得分:2)

你必须把num1 = Float.valueOf(edt2.getText()。toString());进入onClick()方法(对于num2也一样)。

答案 1 :(得分:1)

您正在读取onClick侦听器之外的EditTexts内的值。

另一个注意事项:这是一个很好的做法,特别是如果事情不像你期望的那样工作,首先要检查你是否得到了你期望的价值,然后才能把它呈现出去。

始终检查变量值。问自己Is this variable set correctly? 这样你就可以亲自关注这个问题了。在这里,例如:

public void onClick(View  v){ 
    Log.d("myApp","num1 is: "+num1);
    Log.d("myApp","num2 is: "+num2);
    result=num1+num2;
    ...
}

答案 2 :(得分:0)

你应该把:

在onClick中获取num1和num2代码

你不应该把这段代码放在onClick:

TextView d3=(TextView)findViewById(R.id.display3);

把这个放在

之后
 Button calculate=(Button)findViewById(R.id.add);

答案 3 :(得分:0)

点击

将其移到里面
  num1 = Float.valueOf(edt1.getText().toString());
  num2 = Float.valueOf(edt2.getText().toString());

同时将其移至onCreate将TextView d3声明为类成员

   d3=(TextView)findViewById(R.id.display3);  // no need to initialize everytime on button click

http://developer.android.com/reference/android/app/Activity.html

答案 4 :(得分:0)

我认为你在onCreate()方法中初始化num1和num2。所以你什么都得不到。你必须在onClick(View v)中获得num1和num2值。试试这个

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));             
}

答案 5 :(得分:0)

像这样:

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));              
    }
});