Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Darth_Sanchez
4 / 4 / 1
Регистрация: 28.04.2013
Сообщений: 64
1

Сравнение EditText и String

15.07.2014, 02:36. Просмотров 3483. Ответов 14
Метки нет (Все метки)

Сравнение строк в jave можно осуществить таким образом:
Java
1
2
3
String str1 = "abc";
String str2 = "abc";
str1.equals(str2);
Но когда сравнивается произвольная строка со строкой из поля EditText, то даже при одинаковых строках, пишет, что строки не равны.
Java
1
2
EditText editText;
editText.getText().toString().equals(str1);
Подскажите, в чём ошибка?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2014, 02:36
Ответы с готовыми решениями:

Передать String-путь в EditText AlertDialog'a ?
Вызывается Алерт диалог, в нем кнопка выбора файла, выбираем файл, получаем его путь, String...

Считать с editText русские символы (киррилицу) в string
Вопрос очень прост. Как считать с editText русские символы(киррилицу) в string?

Ввод в один EditText и авто-вычисление в двух других EditText
Всем привет. Есть три поля EditText,виртуальные клавиатуры у всех заблокированы,а ввод чисел в...

EditText смещается вниз при вводе текста, который занимает объём больше, чем EditText
EditText сещается вниз при вводе текста который занимает обём больше чем EditText. Как устранить?

Динамическое создание edittext и обработка данных из edittext
Здравствуйте, мне нужна помощь, у меня есть таблица, где динамически создаются edittext: for (int ...

14
angryrobot
Командир зеленых роботов
349 / 286 / 54
Регистрация: 08.10.2013
Сообщений: 569
15.07.2014, 09:49 2
Цитата Сообщение от Darth_Sanchez Посмотреть сообщение
Подскажите, в чём ошибка?
Никакой ошибки нет, все прекрасно работает

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends ActionBarActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            EditText et = (EditText) findViewById(R.id.editText1);
            et.setText("test");
            if (et.getText().toString().equals("test")) { 
                Toast.makeText(this, "equals", Toast.LENGTH_SHORT).show();
            }
            
        }
}
1
Darth_Sanchez
4 / 4 / 1
Регистрация: 28.04.2013
Сообщений: 64
15.07.2014, 11:24  [ТС] 3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public void CheckAnswer()
    {
        Toast toast;
        
        if(entryFieldEditText.getText().toString().equalsIgnoreCase(_answer))
        {
            toast = Toast.makeText(getApplicationContext(), "Правильно", Toast.LENGTH_LONG); 
        }
        else
        {
            toast = Toast.makeText(getApplicationContext(), "Неправильно", Toast.LENGTH_LONG); 
        }
 
        toast.show(); 
    }

в _answer стоит "1", в entryFieldEditText ввожу "1" и мне выдаёт, что строки не равны(
0
Pablito
2860 / 2273 / 767
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
15.07.2014, 11:34 4
Цитата Сообщение от Darth_Sanchez Посмотреть сообщение
в _answer стоит "1", в entryFieldEditText ввожу "1" и мне выдаёт, что строки не равны
не верю (с)
я бы до условия поставил вывод в консоль, посмотреть чему на самом деле равна _answer
0
15.07.2014, 11:34
Darth_Sanchez
4 / 4 / 1
Регистрация: 28.04.2013
Сообщений: 64
15.07.2014, 11:40  [ТС] 5
Java
1
Log.d(entryFieldEditText.getText().toString(), _answer);
Итак проверяю) равны одному и тому же и всё равно не равны
0
Rube
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
15.07.2014, 14:09 6
Все правильно сверяет, специально создал проект и запустил в эмуляторе: 1 = 1
Ищите проблему в EditText или в _answer.
Java
1
2
3
4
5
6
7
8
9
10
    public void clickme(View v) {
        EditText et = (EditText) findViewById(R.id.editText1);
        Toast toast; 
        String _answer = "1";
        if(et.getText().toString().equalsIgnoreCase(_answer))      
            toast = Toast.makeText(getApplicationContext(), "Правильно", Toast.LENGTH_LONG); 
        else       
            toast = Toast.makeText(getApplicationContext(), "Неправильно", Toast.LENGTH_LONG); 
        toast.show(); 
    }
0
Darth_Sanchez
4 / 4 / 1
Регистрация: 28.04.2013
Сообщений: 64
15.07.2014, 15:14  [ТС] 7
бред какой((( всё делаю как надо и такой косяк, никак не могу понять в чём проблема
0
Pablito
2860 / 2273 / 767
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
15.07.2014, 15:22 8
ээээ wtf ?
вместо EditText et = (EditText) findViewById(R.id.editText1);

надо бы v (параметр который прилетает в метод clickme()) кастовать в EditText и уже из него тащить getText().toString()
0
forcelain
6 / 6 / 1
Регистрация: 14.07.2014
Сообщений: 28
15.07.2014, 15:27 9
С чего Вы взяли, что clickme повешан на EditText, а не на кнопку?
0
Pablito
2860 / 2273 / 767
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
15.07.2014, 15:32 10
Ну пусть на кнопку, ненадо меня троллить, я сам тролль еще тот.

Я говорю о том, что возможно (!) когда вот так писать:
Java
1
2
public void clickme(View v) {
        EditText et = (EditText) findViewById(R.id.editText1);
то et инициализируется заново из ресурсов и равна "" (ваш кеп), тогда EditText надо делать глобальной переменной в этой активити и убрать эту строку из clickme()
0
forcelain
6 / 6 / 1
Регистрация: 14.07.2014
Сообщений: 28
15.07.2014, 15:43 11
Цитата Сообщение от Паблито Посмотреть сообщение
то et инициализируется заново из ресурсов и равна "" (ваш кеп),
et не инициализируется методом findViewById, findViewById может быть вызвана в какое угодно время после создания активити и после выполения отдаст вьюху именно в том, состоянии в котором Вы её видите на экране, т.е. с введенным текстом.
0
Darth_Sanchez
4 / 4 / 1
Регистрация: 28.04.2013
Сообщений: 64
15.07.2014, 21:11  [ТС] 12
товарищи, я решил проблему. она заключалась в том, что _answer я считывал с файла и там добавлялся лишний пробел в начале, но при выводе значения _answer в TextView пробела, почему-то, не было
0
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
15.07.2014, 21:50 13
вы его могли просто не видеть визуально, при сравнении строк из ET не забывайте сделать .trim(), тогда пробелы случайно поставленные в начале и конце подотрутся
0
Rube
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
16.07.2014, 08:00 14
В таких случаях очень полезно заключать вывод в лог или в тост в кавычки или другие символы.
Сразу бы увидели "1 ".
0
Darth_Sanchez
4 / 4 / 1
Регистрация: 28.04.2013
Сообщений: 64
16.07.2014, 15:56  [ТС] 15
я так и делал, но выводил сразу всю строку. потом сделал проверку и вывел посимвольно и там уже обнаружил этого засранца пробел
0
16.07.2014, 15:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2014, 15:56

Не работает сравнение String через ==
if (oldParam1 == param1 && oldParam2==param2){ ...

Не работает сравнение String с пустой строкой
Добрый день. Возникла проблема использования оператора if при нажатии кнопки. ...

AsyncTask<String, String, String> объясните пожалуйста
При описаний класса наследника AsyncTask мы в угловых скобках указываем три типа данных: 1. Тип...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru