从 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()
获取 EditText
的 Editable
对象,在该对象上调用 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 到浮动的字符串的主要内容,如果未能解决你的问题,请参考以下文章
Android EditText获取光标位置并插入字符删除字符