#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();