在java中为android转换的问题

时间:2011-09-13 19:54:58

标签: java android casting

我的程序中有EditText

我的代码:

Double Hi;
private EditText MyHight;
MyHight   = (EditText) findViewById(R.id.editText1);

我需要在MyHight上插入Hi的值

我试试这个:

MyHight.getText().toString();
Hi= (Double)MyHight;

但我在施法时遇到错误

如何解决?

3 个答案:

答案 0 :(得分:4)

尝试:

Hi = Double.valueOf(MyHight.getText().toString());

答案 1 :(得分:1)

您无法将EditText投射到Double

但是,您可以从Double

构建一个新的String
Hi = new Double(MyHight.getText().toString());

或:

Hi = Double.valueOf(MyHight.getText().toString());

答案 2 :(得分:0)

而不是做类似的事情:

Double Hi = Double.valueOf( (EditText) findViewById(R.id.editText1)).getText().toString())

我曾经像Oli的答案那样做标准演员,但厌倦了处理错误等等。所以我写了一整篇Casting,这是我用双打做的一个例子。

public class Cast {
/**
 *  Base number cast, return the value or default
 * @param object - generic Object
 * @param defaultValue - default value to give if Object is null
 * @return - returns type Number
 */
private static Number castImpl(Object object, Number defaultValue) {
    return (object!=null && object instanceof Number) ? (Number)object : defaultValue;
}


/**
 *  Base double cast, return the value or default
 * @param object - generic Object
 * @param defaultValue - default value to give if Object is null
 * @return - returns type double
 */
public static double cast(Object object, double defaultValue) { 
    return castImpl(object, defaultValue).doubleValue();
}
}

这也允许你使用默认值,这是你如何使用它。

Cast.cast("3", 1.0);

我甚至为Arrays做了这个,从int转换为float数组......