правильное использование setOnClickListener

#android #textview #onclicklistener

#Android #textview #onclicklistener

Вопрос:

Я разрабатываю приложение для Android, но у меня нет опыта работы с Android, и мне нужна помощь.

Я собираюсь упростить свой код, вот моя проблема:

Я объявил: TextView test = (TextView) findViewById(R.id.test);

После того, как у меня есть setOnClickListener :

 test.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
    // Here i declare: TextView test = (TextView) findViewById(R.id.test2);
  

Когда я нажимаю test в первый раз, это соответствует findViewById(R.id.test) тому, что должно быть, но когда я нажимаю во второй раз, это все равно соответствует findViewById(R.id.test) .

Есть идеи, почему?

Заранее спасибо! 🙂

Комментарии:

1. что вы собираетесь делать?

2. когда приложение запускается, я хочу передать строку в findViewById(R.id.test) после щелчка, я хочу передать эту строку в другой TextView, в: findViewById(R.id.test2)

3. @Joan Ваш вопрос неясен. Чего ты хочешь? При первом щелчке вашего текстового представления вы хотите записать данные в 1-м текстовом представлении, а при втором щелчке по тому же текстовому представлению вы хотите получить данные во втором текстовом представлении. Если это не ваш вопрос, пожалуйста, уточните подробнее.

4. у меня есть средство проверки ответов, например: исправьте неправильно 1 неправильно 2 неправильно 3 когда я нажимаю на правильный ответ, другие данные заполняют текстовые представления в другом порядке.

5. То, что вы делаете, кажется странным, и я не понимаю смысла этого, но в любом случае, если вы хотите изменить значение вашей внешней переменной «test» изнутри метода «onClick», вам нужно объявить его final или как переменную экземпляра вашего фрагмента / действия. И вам не нужно повторно объявлять его в onClick, иначе он будет интерпретирован как другая переменная.

Ответ №1:

Это потому, что внутри прослушивателя кликов вы определяете новый TextView . Это не одна и та же test переменная.

Когда вы выполняете TextView test = (TextView) findViewById(R.id.test2); внутри прослушивателя щелчков, определяется новая TextView test переменная, которая отличается от той, которую вы определили ранее.

Если вы просто хотите переназначить значение, вы должны использовать test = (TextView) findViewById(R.id.test2); внутри OnClickListener();

Комментарии:

1. Вы правы, но я не объявляю повторно тот же TextView, я объявляю пример TextView и than: test = example; Но TextView не обновляется..