Вопрос:
Предыдущий фрагмент кода был записан с помощью случайных сайтов и ответов из StackOverflow, но почему-то не работает. Я должен добавить, что я являюсь абсолютным новичком при создании приложений, и мой опыт работы с Java также очень ограничен.
Ошибки заключаются в следующем:
- “setOnClickListener”: отмечен красным.
- “public void onClick (View v) {“: Здесь “v” по какой-то причине помечается красным. Он продолжает оставаться красным в “String text = v.toString();”.
- Программа также находит мою точку с запятой избыточной в конце фрагмента.
Я использую бета-версию Android Studio на элементарной ОС, используя OpenJDK.
Button button_1 = (Button) findViewById(R.id.btn_1); button_1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String text = v.toString(); displayPassword(text); } });
Я мог бы совершить любое количество ошибок, это точно. Но любой толчок в правильном направлении был бы очень оценен.
Лучший ответ:
Мое предложение: Установите onClick в файле XML и создайте метод в текущем классе.
<Button android:id=»@+id/btn_1″ android:layout_width=»wrap_content» android:layout_height=»wrap_content» android:onClick=»click» /> public void click(View arg0) { } Ответ №1
Согласитесь с графом, что вам нужно @Override метод onClick. Не уверен, что с ним не так. Фактически, когда я набрал ваш пример в Android Studio, я получил 3 буквы в OnClickListener, и он автоматически заполнил остальные, включая @Override.
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String text = v.toString(); // do something with the text. } });
Кроме того, я не думаю, что v.toString() предоставит вам любую полезную информацию. Если вы хотите, чтобы текст был нажат на кнопку, вам нужно нажать на кнопку, а затем вызвать getText():
Button button = (Button) v; String text = button.getText().toString();
или вы могли бы сделать:
String text = ((Button)v).getText().toString();
Просто вызов v.toString() позволит вам получить описание этой кнопки, а не текст на ней.
Ответ №2
Я считаю, что вам нужно @Override метод onClick.
Button button_1 = (Button) findViewById(R.id.btn_1); button_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String text = v.toString(); displayPassword(text); } }); Ответ №3
Просто нажмите “ctrl + shift + o” и добавьте 1 библиотеку, которую вы показываете на экране.