这段代码有什么问题。函数接受两个数字,添加它们并显示结果。但结果根本没有显示。请帮忙
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));
}
});
答案 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));
}
});