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

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

0 голосов
/ 30 октября 2011

Хорошо, теперь мое терпение исчезло ... Я пытался в течение 30 минут заставить эту простую вещь работать, но я так плохо потерпел неудачу. Возможно, потому, что я начал напрямую с android, без java ... Я изучал 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 ... но ничего ...

Ответы [ 3 ]

2 голосов
/ 30 октября 2011

OK. Перво-наперво: 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 ведут себя как указатели, но не совсем.

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

1 голос
/ 30 октября 2011
String test = new String();
test = "google";

Button buttonx = (Button)findViewById(R.id.button1);
if (test.equals(buttonx.getText())) {
    // it's equal
}
0 голосов
/ 30 октября 2011
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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...