0

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

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

6 回答 6

2

你必须把 num1 = Float.valueOf(edt2.getText().toString()); 进入 onClick() 方法(与 num2 相同)。

于 2013-07-10T08:40:50.807 回答
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;
    ...
}
于 2013-07-10T08:43:02.587 回答
0

你应该把:

在 onClick 中获取 num1 和 num2 代码

而且您不应该将此代码放在 onClick 中:

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

把这个放在后面

 Button calculate=(Button)findViewById(R.id.add);
于 2013-07-10T08:42:21.393 回答
0

单击时将其移至内部

  num1 = Float.valueOf(edt1.getText().toString());
  num2 = Float.valueOf(edt2.getText().toString());

也将其移动以将onCreateTextView d3 声明为类成员

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

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

于 2013-07-10T08:43:34.343 回答
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));             
}
于 2013-07-10T08:45:06.617 回答
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));              
    }
});
于 2013-07-10T09:22:13.333 回答