如何从Android EditText获取数值

时间:2012-05-03 17:53:32

标签: android textview android-edittext

我想构建一个简单的Android应用程序来计算三角形的区域。我有两个textView小部件,一个editText和一个按钮。按下按钮时,它会将半径值传递给计算它的函数。我添加了一个变量并将其初始化为5.0仅用于测试目的,但是我想将editText字段中的值作为半径引用。

这是我的代码。     包com.circle;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;
import android.view.*;
public class MainActivity extends Activity 
{
private Button button1;
public EditText editText1;
public TextView textView1, textView2;
double radius = 5.0, area, perimeter;
public double calculateRadius(double radi)
{ 
    area = Math.PI * (radius * radius);
    return area;
}
public double calculatePerimeter(double rad)
{
    perimeter = 2.0 * Math.PI * radius;
    return perimeter;
}   
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);       
    this.button1 = (Button) findViewById(R.id.button1);
    this.editText1 = (EditText) findViewById(R.id.editText1);
    this.textView1 = (TextView) findViewById(R.id.textView1);
    this.textView1 = (TextView) findViewById(R.id.textView2);
    this.button1.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View target) 
        {       
            calculateRadius(radius);   //what's wrong?
            calculatePerimeter(radius);  //what's wrong??
            textView1.setText("" + area);  //what's wrong
            textView2.setText("" + perimeter);  //what's wrong?
        }
    });

}
}

2 个答案:

答案 0 :(得分:3)

你的问题是施放半径。执行以下操作:

  1. 在XML文件中更改编辑文本-input type = number,即只需要数字..
  2. 在点击类型上,通过Double.parseDouble(输入值)将半径转换为double。
  3. 在XML文件中将txt初始值设置为0,以避免类型转换问题,因为它无法对类型进行类型化。
  4. 就是这样。

答案 1 :(得分:2)

 private double getRadius(){

        double radiusValue = 0;
        try{
            radiusValue= Double.parseDouble(editText1.getText().toString());
            catch (NumberFormatException e){
                // this is not a number. tell the user something here or do something
                Log.e("yourAppTag", Log.getStackTraceString(e));
            }
            return radiusValue;
        }

你需要在你输入半径的地方调用它。

您的calculatePerimiter和calcualteArea方法也没有使用传入的参数。所以摆脱类变量radius,并使用我在这里进行两次计算的方法传入半径。