Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
#1

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

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

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

Android Ошибка при запуске приложения
Ошибка при запуске простого приложения Android
Android Запретить появляться клавиатуре при запуске приложения
Android При запуске приложения подвисает ui поток
Android При запуске приложения выдается ошибка
Android Как присвоить объекту Button координату (x,y) на форме?
Как создать layout, который запускается один раз, при первом запуске приложения? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
02.04.2013, 13:26     Обращение к объекту (button) по id, который будет создан при запуске приложения #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 сравнивать
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
02.04.2013, 14:06  [ТС]     Обращение к объекту (button) по id, который будет создан при запуске приложения #3
Идею с тагом понял, но не совсем понял как в методе onClick сравнить. Можно пример? Спасибо.
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
03.04.2013, 12:49  [ТС]     Обращение к объекту (button) по id, который будет создан при запуске приложения #4
Сделал так:
В цикле присваиваются tag к каждой созданной кнопке.
Затем метод онклик:
public void onClick (View v) {
switch ((Integer) v.getTag()) {
case 1:
блаблабла
break;
case 2:
блаблабла
break;
}
}


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

Добавлено через 1 минуту
long? ClassException? вы сами перепечатывали?
может ClassCastException?
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
03.04.2013, 17:23  [ТС]     Обращение к объекту (button) по id, который будет создан при запуске приложения #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}
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
03.04.2013, 17:33     Обращение к объекту (button) по id, который будет создан при запуске приложения #13
Termit___, весь лог под спойлер выложи

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

выкладывай код.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.04.2013, 19:50     Обращение к объекту (button) по id, который будет создан при запуске приложения #19
Цитата Сообщение от V0v1k Посмотреть сообщение
смотрите класс Second строка 70
что еще не ясно?

Цитата Сообщение от Termit___ Посмотреть сообщение
Second активити, где весь код. он выступает как обработчик onClick. Я подозревал что это не совсем верно.
ну я так никогда не делаю, ведь могут понадобиться и другие обработчики, но проблема не в этом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 16:34     Обращение к объекту (button) по id, который будет создан при запуске приложения
Еще ссылки по теме:

Android Обучение при первом запуске приложения
Android Ошибка при запуске приложения
Android Ошибка верификации при запуске приложения
Android При запуске приложения появляется клавиатура
Android Не удается прочитать текстовый файл который создан из приложения

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

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

1 и 2 это значения Tag, которые присваиваются при создании кнопок.
Yandex
Объявления
09.04.2013, 16:34     Обращение к объекту (button) по id, который будет создан при запуске приложения
Ответ Создать тему
Опции темы

Текущее время: 19:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru