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

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

android.widget.EditText@43749ff0

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

– 罗斯克勒

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

我相信你想这样称呼:

editText.getText()。的toString()

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

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

你不能在这上面使用’toString’方法,而是使用’getText()。toString()’。

试试EditText.getText().toString()

花一点时间阅读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方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”以及对象的哈希码的无符号hex表示组成。 换句话说,此方法返回一个等于值的字符串:

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

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