Получение странного текста обратно с помощью метода EditText.toString () в проекте Android. Зачем? - PullRequest
0 голосов
/ 22 апреля 2011

У меня, кажется, есть фундаментальный пробел в моем понимании объекта EditText.У меня есть Activity + Layout с одним объектом EditText.После того, как я ввел несколько символов в объект EditText и нажал клавишу Enter, я извлекаю текст в моем слушателе onKey ().Когда я использую метод toString () для получения текста, я получаю странную строку вроде:

android.widget.EditText@43749ff0

Несмотря на то, что свойство EditText.mText действительноЯ ввел строку «123» во время моих тестов.Почему toString () возвращает другой результат и что-то вроде неинициализированного значения?Как получить нужную строку в настоящее время в свойстве mText и что это за странное значение?

- roschler

Ответы [ 5 ]

8 голосов
/ 22 апреля 2011

Беглый взгляд на API показывает, что вы должны использовать метод getText().toString() - это общий метод, который применяется к Object и всем его подклассам (то есть ко всему, что не является примитивным, насколько мне известно)Он часто переопределяется для предоставления более полезных строк, но по умолчанию он сообщает что-то вроде того, что вы опубликовали - разреженное описание и хэш-код объекта.Для ясности, API определяет toString() как:

getClass().getName() + '@' + Integer.toHexString(hashCode())
6 голосов
/ 22 апреля 2011

Вы не можете использовать метод 'toString' для этого, используйте 'getText (). ToString ()' вместо.

3 голосов
/ 22 апреля 2011

Вы вызываете toString () для объекта View, для которого, вероятно, не определен toString ().

Я полагаю, вы хотите назвать это:

editText.getText (). ToString ()

3 голосов
/ 22 апреля 2011

Попробуйте EditText.getText().toString()

2 голосов
/ 22 апреля 2011

Уделите немного времени чтению API Java: 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 возвращает строку, которая "текстуально представляет" этот объект,Результатом должно быть краткое, но информативное представление, которое легко читается человеком.Рекомендуется, чтобы все подклассы переопределяли этот метод.Метод toString для класса Object возвращает строку, состоящую из имени класса, экземпляром которого является объект, символа знака «@» и шестнадцатеричного представления без знака хеш-кода объекта.Другими словами, этот метод возвращает строку, равную значению:

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

Возвращает: строковое представление объекта.

...