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

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

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

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

Не удается прочитать текстовый файл который создан из приложения
Задача открывать из написаного мною приложения тектовые файлы которые не...

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

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

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

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

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
94 / 94 / 0
Регистрация: 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
94 / 94 / 0
Регистрация: 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
94 / 94 / 0
Регистрация: 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

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

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

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


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

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

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