Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
#1

Обращение к объекту (button) по id, который будет создан при запуске приложения - Программирование Android

02.04.2013, 12:33. Просмотров 1732. Ответов 21
Метки нет (Все метки)

Здравствуйте.
Подскажите как реализовать обработчик кнопок, коотрые создаются циклом. Т.е. кнопки делаются в цикле, им присваивается id. Но метод onClick не понимает этот id, т.к. он будет создан только во время запуска.
Как можно реализовать обращение метода onClick к еще не созданным объектам(они будут созданны при запуске приложения)?
Спасибо.
http://www.cyberforum.ru/android-dev/thread1809320.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2013, 12:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Обращение к объекту (button) по id, который будет создан при запуске приложения (Программирование Android):

Как создать layout, который запускается один раз, при первом запуске приложения?
Как создать layout, который запускается один раз, при первом запуске...

Как задать tabsheet в pagecontrol, который будет открываться при запуске приложения?
У меня есть pagecontrol в нем 5 tabsheet, как сделать, чтобы при запуске...

Вирус который устанавливает посторонние приложения при запуске
Устанавливает всякие амиго китайские браузеры и прочее, как лечить, помогите.

Отсортировать массив по возрастанию. Найти максимальные в массиве, который будет создан после удаления всех максимальных элементов
Условие: Отсортировать массив по возрастанию. Найти максимальные в массиве,...

При запуске второго потока не отправляется сигнал readyToSend объекту nthread
Здравствуйте, бьюсь уже целый день над проблемой. Суть задачи: Нужно запустить...

21
flashok
87 / 89 / 1
Регистрация: 14.02.2009
Сообщений: 293
02.04.2013, 13:26 #2
ты можешь использовать tag setTag
при создании кнопки задать tag
и в методе onClick у View ты можешь взять tag getTag


ты можешь задать id в файле
id.xml

HTML5
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="mainScrollView" />
    <item type="id" name="adsContaiber" />
    
</resources>
и когда создаешь кнопки их присваивать
и в onClick сравнивать
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
02.04.2013, 14:06  [ТС] #3
Идею с тагом понял, но не совсем понял как в методе onClick сравнить. Можно пример? Спасибо.
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
03.04.2013, 12:49  [ТС] #4
Сделал так:
В цикле присваиваются tag к каждой созданной кнопке.
Затем метод онклик:
public void onClick (View v) {
switch ((Integer) v.getTag()) {
case 1:
блаблабла
break;
case 2:
блаблабла
break;
}
}


При нажатии на кнопку выпадает в ошибку. Я вот еще не совсем уверен с обработчиком. он выглядит так: btnNew.setOnclickListener(this); в теле цикла создания кнопок. Может тут что не так? Подскажите, кто поопытнее. спасибо.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.04.2013, 15:59 #5
какую ошибку?
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
03.04.2013, 16:29  [ТС] #6
Ошибка: The aplication имяприложения has stopped unexpectedly. Ниче не понятно. Люди добрые, подскажите что не так. Буду очень благодарен.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.04.2013, 16:41 #7
смотрите логи.
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
03.04.2013, 16:43  [ТС] #8
Логи не пашут. Особенности Eclipse в Ubuntu на виртуалке. =) Включаешь логи, а там пустота.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.04.2013, 17:10 #9
тогда ничем не могу помочь.
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
03.04.2013, 17:12  [ТС] #10
Таки допилил эклипс, логи появились.
Чесно говоря понятнее не стало: Пишет вот что:
FATAL EXCEPTION:main
java.long.ClassException:java.long.String
И далее ругань на view.performClick.
0_o
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.04.2013, 17:15 #11
полный лог дайте

Добавлено через 1 минуту
long? ClassException? вы сами перепечатывали?
может ClassCastException?
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
03.04.2013, 17:23  [ТС] #12
Как нажимаешь сгенерированную кнопку в логах такая ерунда:
04-03 13:01:14.417: DEBUG/AndroidRuntime(332): Shutting down VM
04-03 13:01:14.417: WARN/dalvikvm(332): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): FATAL EXCEPTION: main
04-03 13:01:14.417: ERROR/AndroidRuntime(332): java.lang.ClassCastException: java.lang.String
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at ru.termit.firsttimedotahero.Second.onClick(Second.java:70)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at android.view.View.performClick(View.java:2485)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at android.view.View$PerformClick.run(View.java:9080)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at android.os.Handler.handleCallback(Handler.java:587)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at android.os.Handler.dispatchMessage(Handler.java:92)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at android.os.Looper.loop(Looper.java:123)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at java.lang.reflect.Method.invokeNative(Native Method)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at java.lang.reflect.Method.invoke(Method.java:507)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-03 13:01:14.417: ERROR/AndroidRuntime(332): at dalvik.system.NativeStart.main(Native Method)
04-03 13:01:14.427: WARN/ActivityManager(60): Force finishing activity ru.termit.firsttimedotahero/.Second
04-03 13:01:14.937: WARN/ActivityManager(60): Activity pause timeout for HistoryRecord{40744fa0 ru.termit.firsttimedotahero/.Second}
04-03 13:01:24.438: WARN/ActivityManager(60): Launch timeout has expired, giving up wake lock!
04-03 13:01:24.958: WARN/ActivityManager(60): Activity idle timeout for HistoryRecord{406f6ac8 ru.termit.firsttimedotahero/.FirstActivity}
04-03 13:01:30.167: WARN/ActivityManager(60): Activity destroy timeout for HistoryRecord{40744fa0 ru.termit.firsttimedotahero/.Second}
0
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 5
Регистрация: 04.03.2013
Сообщений: 295
03.04.2013, 17:33 #13
Termit___, весь лог под спойлер выложи

Добавлено через 41 секунду
опоздал =)
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.04.2013, 17:34 #14
ошибка приведение типов
ZygoteInit ваш класс? смотрите строку 839.
0
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 5
Регистрация: 04.03.2013
Сообщений: 295
03.04.2013, 18:02 #15
Цитата Сообщение от V0v1k Посмотреть сообщение
ZygoteInit
Это же системный класс Android.
Метод onClick смотри. Где-то с приведением типов накасячил. Если метод небольшой сюда запости.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.04.2013, 18:40 #16
сори, напутал, смотрите класс Second строка 70
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
03.04.2013, 19:33  [ТС] #17
Second активити, где весь код. он выступает как обработчик onClick. Я подозревал что это не совсем верно. Но вото что?
0
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 5
Регистрация: 04.03.2013
Сообщений: 295
03.04.2013, 19:39 #18
Цитата Сообщение от Termit___ Посмотреть сообщение
Но вото что?
Тут надо как следует подумать ... хотя нет надо лучше у V0v1k'a, спросить может он знает а то я пока начинающий телепат.

выкладывай код.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.04.2013, 19:50 #19
Цитата Сообщение от V0v1k Посмотреть сообщение
смотрите класс Second строка 70
что еще не ясно?

Цитата Сообщение от Termit___ Посмотреть сообщение
Second активити, где весь код. он выступает как обработчик onClick. Я подозревал что это не совсем верно.
ну я так никогда не делаю, ведь могут понадобиться и другие обработчики, но проблема не в этом.
0
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 86
09.04.2013, 16:34  [ТС] #20
Прошу прощения за долгое отсутствие. Уезжал на некоторое время из дома, написать не мог.
70 строка - это метод onClick:
Кликните здесь для просмотра всего текста
public void onClick(View v) {
switch ((Integer) v.getTag()) {
case 1:
break;
case 2:
break;
}
}

1 и 2 это значения Tag, которые присваиваются при создании кнопок.
0
09.04.2013, 16:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 16:34
Привет! Вот еще темы с решениями:

Сделать модуль приложения, который будет регистрировать email
1 Нужно сделать модуль приложения, который будет регистрировать email...

Ошибка при запуске приложения из приложения WinAPI
Здравствуйте. Есть следующий код, найденный на просторах интернета. int...

Обращение в объекту
У меня есть допустим 5 разных объктов с одинаковым методом например Method()...

Обращение к объекту
Ручками создаю объект типа MovieClip именем Monitoring1 и помещаю на него по 5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru