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

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

15.07.2014, 02:36. Просмотров 2793. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2014, 02:36
Ответы с готовыми решениями:

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

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

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

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

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

14
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
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
2732 / 2167 / 735
Регистрация: 12.05.2014
Сообщений: 7,586
Завершенные тесты: 1
15.07.2014, 11:34 4
Цитата Сообщение от Darth_Sanchez Посмотреть сообщение
в _answer стоит "1", в entryFieldEditText ввожу "1" и мне выдаёт, что строки не равны
не верю (с)
я бы до условия поставил вывод в консоль, посмотреть чему на самом деле равна _answer
0
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
911 / 559 / 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
2732 / 2167 / 735
Регистрация: 12.05.2014
Сообщений: 7,586
Завершенные тесты: 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
2732 / 2167 / 735
Регистрация: 12.05.2014
Сообщений: 7,586
Завершенные тесты: 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
911 / 559 / 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
MoreAnswers
Эксперт
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 мы в угловых скобках указываем три...


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

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

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