2012-07-04 4 views
0

Это мой код до сих пор:Синтаксический распознавания голоса Android Результаты

ArrayList<String> matches = data 
       .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

     String playString = "play"; 

     if(matches.get(0).toString() == playString) 
     { 

      // do something 
     } 

Стремительное распознавания голоса тянет просто отлично, и я проверил это, и это на самом деле понимание того, что я говорю слово "играть." Однако при выполнении сравнения в выражении if он терпит неудачу каждый раз - с или без toString(). Что я не понимаю?

ответ

2

Вместо того, чтобы использовать == как: if(matches.get(0).toString() == playString)

Использование .equals() как: if(matches.get(0).toString().equals(playString)

+0

Это работало отлично! Не могли бы вы объяснить, почему, пожалуйста? –

4

Давать ответ вашего ПОЧЕМУ.
Оператор == проверяет, ссылаются ли две ссылочные переменные объекта на один и тот же экземпляр объекта.

Метод, .equals(), проверяет, эквивалентны ли эти два объекта друг другу, но они не обязательно должны быть одним и тем же экземпляром одного и того же объекта.

Пример # 1:

Integer i = new Integer(10); 
Integer j = i; 

в приведенном выше коде. i == j истинно, потому что оба i и j относятся к одному и тому же объекту.

Пример № 2:

Integer i = new Integer(10); 
Integer j = new Integer(10); 

В приведенном выше коде, я == J является ложным, потому что, хотя они оба имеют значение 10, они являются двумя разными объектами.

Кроме того, в приведенном выше коде, i.equals (к) верно, потому что, хотя они два разных объекта, они эквивалентны в том, что они представляют собой один и тот же номер, 10.

+0

Отлично, спасибо !!! –

+0

Голосовать будет очень благодарен;) – Waqas