2013-07-10 112 views
0

此代码有什么问题。函数接受两个数字,添加它们并显示结果。但结果根本不显示。请帮助不显示在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));    
    } 
}); 
+0

你应该包括你的XML代码。 –

回答

2

您必须将num1 = Float.valueOf(edt2.getText()。toString());进入onClick()方法(对于num2也是如此)。

0

你应该把:

越来越NUM1与NUM2代码中的onClick

,你不应该把这段代码中的onClick:

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

将这个后

Button calculate=(Button)findViewById(R.id.add); 
1

您正在读取onClick侦听器之外的EditText中的值。

另一个说明:这是一个很好的做法,特别是如果事情不像您预期​​的那样工作,首先要检查您是否在尝试呈现之前获得了您期望的价值。

始终检查变量值。问问自己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; 
    ... 
} 
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));    
} 
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));    
    } 
});