使用Android项目中的EditText.toString()方法返回奇怪的文本。为什么?

时间:2011-04-21 21:31:53

标签: java android android-edittext tostring

我对EditText对象的理解似乎有一个基本的差距。我有一个Activity + Layout与一个EditText对象。在EditText对象中键入几个字符并按Enter键后,我在onKey()侦听器中检索文本。当我使用toString()方法来检索文本时,我得到了一个奇怪的字符串,如:

android.widget.EditText@43749ff0

尽管EditText.mText属性确实显示了我输入的字符串,但在测试期间显示“123”。为什么toString()返回一个不同的结果,看起来是某种“uninitalize”值?如何在mText属性中获取当前所需的字符串以及该奇怪的值是什么?

- roschler

5 个答案:

答案 0 :(得分:8)

通过浏览API建议您使用getText()方法。 toString()是一种适用于Object及其所有子类的通用方法(据我所知,它不是原始的所有内容)。它经常被覆盖以提供更多有用的字符串,但默认情况下,它会报告与您发布的内容类似的内容 - 稀疏描述和对象的哈希码。为清楚起见,APItoString()定义为:

getClass().getName() + '@' + Integer.toHexString(hashCode())

答案 1 :(得分:6)

你不能在此使用'toString'方法,而是使用'getText()。toString()'。

答案 2 :(得分:3)

尝试EditText.getText().toString()

答案 3 :(得分:3)

您正在View对象上调用toString(),它可能没有定义toString()。

我相信你想称之为:

editText.getText()。的toString()

答案 4 :(得分:2)

花点时间阅读java API:http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#toString%28%29

  

的toString

public String toString() Returns a string representation of the object.
     

一般来说,toString方法   返回一个"文本字符串   代表"这个对象。结果   应该是一个简洁但信息丰富的   表达很容易   有人读。建议这样做   所有子类都重写此方法。   类Object的toString方法   返回由。组成的字符串   对象的类的名称   是一个实例,即符号字符   `@',和无符号的十六进制   表示哈希码的   宾语。换句话说,这种方法   返回一个等于该值的字符串   的:

getClass().getName() + '@' + Integer.toHexString(hashCode())
     

返回:表示的字符串   对象。