为什么我的editText没有在android中显示正确的输出?

时间:2013-07-30 12:36:21

标签: java android android-edittext

我是android编程的初学者,我正在尝试用3个editText字段编写一个简单的计算器。 其中2个用作输入,第3个用作输出结果。 当我点击“+”按钮时,我希望它输出2个数字的总和。 但我得到一个奇怪的数字,例如2 + 3 = 2.131230724E9 我尝试通过网络解决,但找不到具体问题....谢谢......

final double tf1 = Double.parseDouble(String.valueOf(R.id.editText1));
final double tf2 = Double.parseDouble(String.valueOf(R.id.editText2));


    Button btplus = (Button)findViewById(R.id.button1);


    btplus.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v)
        {
            double tf3;
            tf3 = tf1 + tf2;
            EditText result = (EditText)findViewById(R.id.editText3);
            result.setText(String.valueOf(tf3));
        }
    });

5 个答案:

答案 0 :(得分:2)

问题在于您的代码:

final double tf1 = Double.parseDouble(String.valueOf(R.id.editText1));
final double tf2 = Double.parseDouble(String.valueOf(R.id.editText2));

您没有获取EditText的值,而是获取对象的引用。你需要为这样的事情改变这个

final double tf1 = Double.parseDouble(((EditText)findViewById(R.id.editText1)).getText().toString());
final double tf2 = Double.parseDouble(((EditText)findViewById(R.id.editText2)).getText().toString());

此外,您应该在按钮的OnClick方法中包含这些行,因此当您单击按钮时它将获取当前值。

答案 1 :(得分:2)

R.id.editText1指的是R.java中的int值。

您需要先在onCreate初始化EditText。如果您不希望final修饰符将EditText声明为类成员

   final EditText ed1 = (EditText) findViewById(R.id.editText1);
   final EditText ed2 = (EditText) findViewById(R.id.editText1);
   final EditText result = (EditText)findViewById(R.id.editText3);  

然后

    Button btplus = (Button)findViewById(R.id.button1);  
    btplus.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v)
    {
        double tf3;
        double tf1 =Double.parseDouble(ed1.getText().toString());
        double tf2 =Double.parseDouble(ed2.getText().toString());
        tf3 = tf1 + tf2; 
        result.setText(String.valueOf(tf3));
    }
    });

答案 2 :(得分:0)

而不是:

result.setText(String.valueOf(tf3));

使用此:

result.setText("" + tf3);

答案 3 :(得分:0)

尝试以下方法:

EditText editText1 = (EditText) findViewById(R.id.editText1);
EditText editText2 = (EditText) findViewById(R.id.editText2);

final double tf1 = Double.parseDouble(editText1.getText().toString());
final double tf2 = Double.parseDouble(editText2.getTExt().toString());

R.id只是一个引用整数,这就是为什么在将两个id整数加在一起时得到奇数,而不是文本框中的实际值。

答案 4 :(得分:0)

final double tf1 = Double.parseDouble(edittext1.getText().toString());
final double tf2 = Double.parseDouble(edittext2.getText().toString());


Button btplus = (Button)findViewById(R.id.button1);


btplus.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v)
    {
        double tf3 = 0;
        tf3 = tf1 + tf2;
        EditText result = (EditText)findViewById(R.id.editText3);
        result.setText(String.valueOf(tf3));
    }
});