#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 не обновляется..