Сравнить текст кнопки

#android #text #button #if-statement #compare

#Android #текст #кнопка #if-оператор #Сравнить

Вопрос:

Ладно, теперь моя жалость прошла…Я пытался в течение 30 минут заставить эту простую вещь работать, но у меня ничего не вышло.Может быть, это потому, что я начал напрямую с Android, без java…Я изучал c раньше, и на c это было так легко сделать…

У меня есть кнопка в XML-файле:

    <Button android:text="Button" 
   android:layout_width="wrap_content" 
   android:id="@ id/button1" 
   android:layout_height="wrap_content" 
   android:layout_alignParentBottom="true" 
   android:layout_alignParentLeft="true" 
   android:layout_marginBottom="108dp">
   </Button>
 

И в моем java-файле у меня есть строка, подобная этой:

    String test = new String();
   test = "google";
 

Я уже настроил прослушиватель onclick для кнопки, так что проблем нет.
Мой вопрос в том, если:

   Button buttonx = (Button)findViewById(R.id.button1);
 

Как я могу сравнить, если onClick (код onclick уже создан) текст buttonx = строковый тест, который является «google».

Я пробовал с помощью getText, setText … но ничего…

Ответ №1:

ОК. Перво-наперво: String s в Java полностью отличаются от C . На самом деле, объекты довольно сильно отличаются друг от друга.

 String test = new String();
test = "google";
 

не делает того, что вы думаете.

Что это делает, так это создает новый пустой String объект и сохраняет ссылку на него test . В следующей строке хранится ссылка на постоянную строку «google» test и делает пустую String строку, созданную вами в предыдущей строке, пригодной для сборки мусора. Это полностью отличается от C , где вторая строка фактически вызывает = оператор в String классе. Вы можете подумать, что все в Java является указателем (но не совсем), поэтому присваивание в Java ведет себя как присвоение указателя в C (но не совсем).

Вернемся к вашему вопросу.

Что-то вроде этого может сработать:

 String test = "google";
Button b = ...;
if (test.equals(b.getText()) {
    // whatever
}
 

Помните, что, хотя Java и C имеют некоторое сходство в синтаксисе, на самом деле это совершенно разные языки. Ссылки Java вроде как ведут себя как указатели, но не совсем.

Действительно.

Ответ №2:

 String test = new String();
test = "google";

Button buttonx = (Button)findViewById(R.id.button1);
if (test.equals(buttonx.getText())) {
    // it's equal
}
 

Ответ №3:

 if (button.getText().toString().equalsIgnoreCase(test))
  Toast.makeText(this, "Button text equals!", Toast.LENGTH_SHORT).show();
else
  Toast.makeText(this, "Button text is not the same.", Toast.LENGTH_SHORT).show();