Android onClickListener – ошибка Android Studio или моя собственная ошибка?

Вопрос: Предыдущий фрагмент кода был записан с помощью случайных сайтов и ответов из StackOverflow, но почему-то не работает. Я должен добавить, что я являюсь абсолютным новичком при создании приложений, и мой опыт работы с Java также очень ограничен. Ошибки заключаются в следующем: "setOnClickListener": отмечен красным. "public void onClick (View v) {": Здесь "v" по какой-то

Вопрос:

Предыдущий фрагмент кода был записан с помощью случайных сайтов и ответов из 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 библиотеку, которую вы показываете на экране.

Оцените статью
Добавить комментарий