从 EditText 到浮动的字符串

Posted

技术标签:

【中文标题】从 EditText 到浮动的字符串【英文标题】:String from EditText to float 【发布时间】:2010-11-19 21:50:10 【问题描述】:

我有一个将用于浮点数的 EditText。所以我试图从 EditText 中读取文本并将其放入一个浮点变量中。但我似乎有一个文本浮动问题。这是我的行:

float Number = ( ( EditText )findViewById( R.id.edit_float ) ).getText();

我尝试过使用 Float.parseFloat(string) 和一般的强制转换,但似乎没有任何效果。我可以在这里做什么?另外,有没有办法在将浮点数写入变量之前检查其是否有效?

【问题讨论】:

确保您养成查看返回类型的习惯。显然,尝试将字符串设置为浮点数是行不通的。您必须按照以下 Octavian Damiean 的回答进行转换。 关于那个话题,他实际上是在尝试使用这一行从 Editable 转换为 float,因为 getText() 返回一个 Editable。 【参考方案1】:

试试这个。

EditText edt = (EditText) findViewById(R.id.edit_float);
float number = Float.valueOf(edt.getText().toString());

如果Float 包装类将字符串转换为浮点数,则使用valueOf() 方法。在此示例中,我使用 getText() 获取 EditTextEditable 对象,在该对象上调用 toString() 方法以从中获取字符串。

更新:完全正确的家伙对不起。是时候增加我的绵羊计数器了。

【讨论】:

getText() 返回Editable。您需要使用edt.getText().toString();。编辑:被打了1分钟。 :P 谢谢!现在我的整行是: Float.valueOf( ( ( EditText )findViewById( R.id.edittext_wireframe_width ) ).getText().toString() ); 在那张纸条上,我想知道为什么谷歌选择这样做?我认为单独的 Editable getEditable()String getText() 方法会更清晰,不是吗? 感谢@Falmarri 和@kcoppock。 @kcoppock:EditText 实例引用的对象是Editable;返回 String 意味着每次调用 getText 时都会创建一个实例。这样的 API 确保 String 实例的创建是明确的。 (有关为什么创建太多对象不好的更多详细信息,请参阅developer.android.com/guide/practices/design/…)【参考方案2】:
float getFloatFrom(EditText txt) 
    try 
        return NumberFormat.getInstance().parse(txt.getText().toString()).floatValue();
     catch (ParseException e) 
        return 0.0f;
    

如果您希望代码在使用小数点逗号而不是小数点的国家/地区工作,请不要使用 Float.valueOf()。

【讨论】:

我相信数字转换最好按照how-to-parse-number-string-containing-commas-into-an-integer-in-java处理 你能说得更具体点吗?

以上是关于从 EditText 到浮动的字符串的主要内容,如果未能解决你的问题,请参考以下文章

将数据从edittext发送到listview

Android EditText获取光标位置并插入字符删除字符

android格式的edittext,每4个字符后显示空格

以编程方式结合 Textview 和 EditText 创建自定义字段

java EditText的浮动标签

如何从 EditText 获取字符?