Getting weird text back with EditText.toString() m

2019-01-20 06:51发布

I appear to have a fundamental gap in my understanding of an EditText object. I have an Activity+Layout with a single EditText object. After I type a few characters into the EditText object and hit the Enter key, I retrieve the text in my onKey() listener. When I use the toString() method to retrieve the text I get back a weird string like:

android.widget.EditText@43749ff0

Despite the fact the EditText.mText property does show the string I entered, "123" during my tests. Why is toString() returning a different result and what appears to be some kind of "uninitalize" value? How do I get the desired string currently in the mText property and what is that strange value?

-- roschler

5条回答
相关推荐>>
2楼-- · 2019-01-20 07:12

You are calling toString() on a View Object, which probably does not have a toString() defined.

I believe you want to call this:

editText.getText().toString()

查看更多
ゆ 、 Hurt°
3楼-- · 2019-01-20 07:16

Passing glance at the API suggests you should use the getText() method. toString() is a general method that applies to Object and all its subclasses (i.e., everything that isn't a primitive, to my knowledge). It's often overridden to supply more useful strings, but by default, it reports something just like what you posted - a sparse description and the object's hashcode. To be clear, the API defines toString() as:

getClass().getName() + '@' + Integer.toHexString(hashCode())
查看更多
霸刀☆藐视天下
4楼-- · 2019-01-20 07:21

Take a moment to read the 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.

In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method. The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

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

Returns: a string representation of the object.

查看更多
我欲成王,谁敢阻挡
5楼-- · 2019-01-20 07:30

You can't use the 'toString'-method on this, use 'getText().toString()' in stead.

查看更多
Anthone
6楼-- · 2019-01-20 07:33

Try EditText.getText().toString()

查看更多
登录 后发表回答