|
0 / 0 / 0
Регистрация: 21.02.2011
Сообщений: 7
|
||||||
Как обработать нажатие ImageView12.11.2012, 00:32. Показов 21498. Ответов 16
Метки нет (Все метки)
Создаю программу на Андроиде. И сразу столкнулся с проблемой. Почему то не получается...
Создаю три объекта ImageView, и надо при нажатии на одну из картинок, чтобы она заменялась новой. Как это реализовать? Может кто подскажет? Добавлено через 1 час 4 минуты И вобще, такой код правильный?
0
|
||||||
| 12.11.2012, 00:32 | |
|
Ответы с готовыми решениями:
16
Как обработать нажатие на ImageView? Как обработать нажатие на изображение в элементе listView? Двойное нажатие на ImageView |
|
0 / 0 / 2
Регистрация: 11.11.2012
Сообщений: 7
|
|||||||||||
| 12.11.2012, 02:04 | |||||||||||
|
Доброй ночи! Я очень новичок в программировании под андроид(меньше недели) и вообще в программировании. Код, наверное, очень кривой. Я думаю, что будет как-то так. У меня заработало.
Буду очень благодарен, если кто-нибудь покритикует то, что я написал тут!
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 21.02.2011
Сообщений: 7
|
|
| 12.11.2012, 12:59 [ТС] | |
|
NeComilfo, спасибо, работает как надо.
0
|
|
|
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
|
|
| 14.11.2012, 10:37 | |
|
Что касается критики:
Объекты надо создавать 1 раз - как правило в onCreate. Не делайте лишних действий и не засоряйте код. В данном случае в switch пункт default бесполезен и не нужен
0
|
|
|
0 / 0 / 0
Регистрация: 21.02.2011
Сообщений: 7
|
||
| 14.11.2012, 11:03 [ТС] | ||
|
ImageView imag = (ImageView) findViewById(R.id.imageView1); imag.setClickable(true); imag.setOnClickListener(this); } public void onClick(View v){ switch (v.getId()) { case R.id.imageView1: ImageView imag = (ImageView) findViewById(R.id.imageView1); imag.setClickable(true); imag.setImageDrawable(getResources().get Drawable(R.drawable.ic_action_search)); break; Красным выделил создание 2х объектов? Это имеешь ввиду? А как же тогда использовать 1 объект? в методе onClick не надо создавать еще раз объект imag?
0
|
||
|
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
|
||||||
| 14.11.2012, 12:37 | ||||||
Сообщение было отмечено как решение
Решение
именно так - ты создаешь их как переменные, а как правило нужно создавать их как поля класса.
Вообще твой класс должен выглядеть примерно так:
3
|
||||||
|
0 / 0 / 2
Регистрация: 11.11.2012
Сообщений: 7
|
|
| 14.11.2012, 14:10 | |
|
Спасибо! А то я комплексовал из-за того, что приходится несколько раз объявлять одно и то же, но не знал как этого избежать.)
0
|
|
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
| 17.11.2012, 17:32 | |
|
Я вас всех огорчу, но даже полями класса делать не нужно, в метод onClick уже приходит нужный View и можете работать напрямую с ним.
0
|
|
|
0 / 0 / 0
Регистрация: 21.02.2011
Сообщений: 7
|
|
| 17.11.2012, 19:13 [ТС] | |
|
0
|
|
|
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
|
|
| 17.11.2012, 21:26 | |
|
1
|
|
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
||
| 17.11.2012, 21:44 | ||
|
объявлено не используемое поле класса. метод onClick не валидный, ибо метод setimageresource дергается у базового класса, у которого данного метода нету, тобишь нужен каст, продолжать?
0
|
||
|
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
|
|
| 17.11.2012, 22:10 | |
|
ну да, каст нужен, но в основном то правильно, именно так, как ты писал, а поля там лишь для примера, читайте внимательней.
0
|
|
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
| 17.11.2012, 22:15 | |
|
0
|
|
|
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
|
|||
| 17.11.2012, 22:49 | |||
|
именно для примера. при многократном использовании не нужно постоянно вызывать findViewById.
главное саму суть написать, не всегда есть возможность проверить на валидность...
0
|
|||
|
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
|
|
| 17.11.2012, 22:53 | |
|
В данном случае я показал простейшую и очень понятную структуру кода. Все поля, кстати используются: 2 для объявления слушателя, 3-е - в слушателе. К слову, объективная критика на мой код тоже принимается, так что я был бы рад увидеть более грамотный код. И не забывайте, что тему создал новичок и отвечаем мы прежде всего ему.
1
|
|
|
0 / 0 / 0
Регистрация: 21.02.2011
Сообщений: 7
|
||||||
| 17.11.2012, 23:15 [ТС] | ||||||
|
Еще после первого ответа в этой теме написал код, который заработал. Это макет игры крестики-нолики. Переменные еще не переделал, чтобы они полями были.
Кликните здесь для просмотра всего текста
Только теперь не пойму как увеличить размер ImageView, чтобы 3 картинки растянулись на всю ширину экрана. В LinearLayout есть вес, а Relative такого нет...
0
|
||||||
|
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
|
||||||
| 18.11.2012, 15:14 | ||||||
|
Что тебе мешает разместить LinearLayout внутри RelativeLayout и в нем размещать свои ImageView?
Ты выложил апкашку, нужно выкладывать проект, чтобы можно было его весь посмотреть (думаю, об авторских правах тут речи нет?). Не видно твою разметку. Я так понимаю - игровое поле у тебя 3х3. Если ты решил использовать стандартные элементы вместо того чтобы рисовать наа канвасе, то само игровое поле (а у тебя могут быть еще и другие элементы интерфейса могло бы быть таким:
Изображения и параметры растягивания для ImageView укажи сам. А вообще у тебя код очень длинный и много повторений. Я бы наверно в этом случае загнал бы элементы игрового поля в ArrayList и все проверки и назначения изображений и прикрепление слушателей производил бы циклически проходом по коллекции...
1
|
||||||
| 18.11.2012, 15:14 | |
|
Помогаю со студенческими работами здесь
17
ImageView не работает нажатие Как в ListView обработать нажатие кнопки и изменить здесь же значение в textView ? Как обработать нажатие кнопки "Назад", чтобы открывался рекламный баннер?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|