3 / 3 / 2
Регистрация: 27.03.2013
Сообщений: 147
|
|
1 | |
Одинаковые названия id для 2х кнопок26.10.2014, 21:37. Показов 5710. Ответов 24
Метки нет (Все метки)
Пишу приложение и там есть 2 xml файла,что то типа диалога,там я ввожу данные элемента которого хочу добавить в БД,так вот у меня на каждом из этих 2 xml файлов есть по кнопке Ok и Cancel, назвал id я на каждой кнопке btnOK и btnCancel,подскажите,пожалуйста,можно ли как то прописать чтоб я обращался к id конкретного xml файла,а то если через R.id обращаться ,то он 1е попавшееся значение берет ?
0
|
26.10.2014, 21:37 | |
Ответы с готовыми решениями:
24
Почти одинаковые названия TMainmenu названия кнопок Одинаковые package и названия классов Одинаковые названия функций QT и Socket |
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
|
|
27.10.2014, 16:49 | 2 |
Все возьмется как надо не переживайте.
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
27.10.2014, 18:52 | 3 |
А зачем вообще делать одинаковые id?
0
|
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
|
|
27.10.2014, 18:55 | 4 |
А почему бы и нет? У меня 3 xml по сути одинаковые. В самом коде мы цепляем нужный layout, а остальное остается неизменным.
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
27.10.2014, 18:58 | 5 |
Ок тогда зачем три одинаковых xml?
0
|
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
|
|
27.10.2014, 19:02 | 6 |
Не одинаковых, а по сути одинаковых. Кое что все-таки у них разное. Например для виджетов. Некоторые параметры RemoteView не дает менять программно.
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
27.10.2014, 19:09 | 7 |
Ну если так - да, имеет смысл. А для всего остального есть
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
28.10.2014, 05:23 | 8 |
Два года уже "кодю", а полезности фрагментов пока не понял... Наоборот пишу "костыли" лишь бы от них избавиться там где считается что без них нельзя (ViewPager)...
Когда Вы подключаете в свое активити XML он становится "главным". Id-ы ищутся ТОЛЬКО в нем. Внутри одного активити Id должны быть уникальными. Но если есть 2 активити с разными XML то они "пересекаться" не будут!
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
28.10.2014, 08:04 | 9 |
Тоже избегал их долго. Но всетаки с ними кода намного меньше. 1 раз нарисовал xml, сделал абстрактный фрагмент, описал в нем весь общий код - и все хоть миллион вариаций этого фрагмента в пару строк кода каждая. Это как свой виджет только удобнее)
2
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
28.10.2014, 10:55 | 10 |
Tester64, я взял чужой проект, было не выбирать - пришлось работать с фрагментами. Обратно на работу с активностями пока не тянет в том смысле, что активности, по сути, это совершенно разные формы, а фрагменты удобны для единообразия. Например, есть MainActivity со своими шапкой и подвалом, едиными для всего приложения. Средняя часть может меняться. Удобнее сделать это фрагментами, чем прописывать такое поведение в каждой активности. Кроме того, навигация по активностям может несколько отличаться (наверное) от таковой по фрагментам. С фрагментами можно, например, добавить их несколько в стек, потом часть выбросить.
Но есть и минусы. Требуется внимательность. У фрагментов свой жизненный цикл, не всегда пересекающийся с жизненным циклом активностей. Кроме того, при длительных переходах с одного фрагмента на другой активность может быть уничтожена, что может привести к крэшу приложения, если не знать, как это обойти.
1
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||||||
28.10.2014, 16:47 | 11 | |||||
Я это все пока пишу через includ'ы в xml.
Они "заворачиваются" в лейауты и управляют их видмостью. Подмена инклюда в проекте меняет кусок во всех активити. Например блок цветных кнопок Да-Нет внизу каждого диалога. Так-же инклюдами делают ВСЕ фиксированные закладки в одном активити. Без динамического создания. Когда даже очень сложная активити не превышает 500 строк это удобнее чем разрезать ее на 5-6 фрагментов и каждый оформлять своими файлами и кодом. И потом еще устраивать обмен сообщений между фрагментами вместо наглого обращения к компонентам по ID из любого места кода в любую закладку (даже не видимую сейчас). Сейчас пишу свой компонент - составной блок из списка, графического (рисованого) скролла и цветных кнопок управления списком под ним (с командой спрятать/показать). По идее будет "унифицирован" и воткнут в большинство моих проектов - проще подключение к коду, заготовки для работы со справочниками и т.д... Подумываю обернуть это в фрагменты... Но если сейчас это перепишу, боюсь усложнить общение с основной программой. Сейчас его интеграция в проект включает инклюд в активити
Напрямую прописываю реакторы через интерфейсы и отсылаю команды в него методами. Через функцию могу получить (например) размер списка или видимость кнопок. Или задать размеры и цвета рисованного скролла. Неужели подобного можно добиться фрагментами?
2
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
28.10.2014, 17:34 | 12 |
Tester64, я незнаком с инклюдами, но примерно понял. Подскажите, пожалуйста, как вы делаете следующую вещь: у вас на экране есть три вкладки (например, прогноз погоды на сегодня, завтра и на неделю или что угодно), вы перемещаетесь между ними (с первой на вторую вкладку, затем на третью). Нажимаете кнопку "назад" и возвращаетесь не с третьей вкладки во вторую, а сразу на стартовый экран.
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
28.10.2014, 19:29 | 13 |
Или я не понял вопроса или Вы термины путаете...
ЗАкладки не равны Активити! А "Вкладки"? Закладки - это как "заложеные страницы в книжке". Микрокнопки переключатели в верху страницы. При нажатии на закладку на шапке тело активити меняется. А активити... из одной можно переходить в другую лишь вызвав ее. Как переоткрыть программу в винде или положить ее снизу наверх. "Назад" обычно закрывает текущую активити. Но ее можно перехватить назначив свой обработчик. Там можно либо вызывать заново первое окно либо закрыть текущее назначив некий глобальный маркер прошлой что-бы тоже закрылав как только ей передадут фокус.. (сам такого пока не делал)
0
|
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
|
|
28.10.2014, 19:39 | 14 |
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
28.10.2014, 20:10 | 15 |
Инклюды помогают создавать СОСТАВНЫЕ XML файлы. Делить длинный файл на блоки. Например у меня была активити с 3мя закладками. В каждой закладке было от 10 элементов (кнопки, редакторы, галочки). Редактировать все это в одном файле - тяжело! Предварительный просмотр хватает только первую закладку. Опять-же можно делать "заготовки" элементов. Например едитор с кнопкой. Или заготовку для кнопок да-нет внизу активити. Тогда подправив лишь в одном месте заготовку она исправится во всех активити. Так-же можно для двух разных проектов просто перекидывать заготовки между проектами. Например стильные надписи...
0
|
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
|
|
28.10.2014, 20:12 | 16 |
Все это хорошо, но мне кажется как то это кривовато или нет? Я сам порой так делаю, но всегда мучат сомнения. А за наводку на include действительно спасибо. Сразу вздохнул свободнее. Как я прошел мимо этого тэга.
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
28.10.2014, 23:22 | 17 |
Пока все работает... Тег тоже в учебниках не встречал - обнаружил случайно в чужих исходниках. И действительно "задышалось легче" - мегасложные активити с сотней тегов смог разбить на логические не большие блоки.
И пока не встретил РЕАЛЬНОЙ необходимости плодить фреймы. Сейчас успешно избавился от них в android.support.v4.view.ViewPager. Хотя во всех учебниках примеры исключительно через фреймы. У меня получился лишь один внешний обработчик (на интерфейсах) который заполняет тело закладки. И потом я пользуюсь любым элементом любой закладки. И в закладках убрал их пересоздание - ОЧЕНЬ шустро получилось. И 30-50 элементов вполне логично смог разместить в одном активити. Включая список с настройками. А основной код (административный) оказался меньше 500 строк. Каждый элемент контролируется классами, а в основном вся управляющая логика, которую легко менять...
0
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
|
29.10.2014, 08:32 | 18 |
0
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
29.10.2014, 15:11 | 19 |
Вот здесь как раз уместны фрагменты.
Во фрагментах это происходит подобным образом, но зато там легко можно сбросить произвольное количество фрагментов со стека и вернуться к нужному фрагменту, а после, например, и вовсе закрыть программу. Я пока не знаю, что происходило бы, если бы потребовалось закрыть 3 активности подряд одной кнопкой. Или они не кладутся в стек?
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|||||||||||
29.10.2014, 20:49 | 20 | ||||||||||
Тяжело... Я сам не до конца понял как это получилось. Вынес ВСЮ математику в отдельный класс-хранилище. В этом-же классе хранится управление шапкой закладок как отдельным компонентом. Связь между элементам шапки и тела через строковые теги. Подключение ВСЕЙ конструкции в активити выглядит так:
Кликните здесь для просмотра всего текста
Отдельно выбираю (командой) вид анимации страниц из моей-же коллекции анимаций (в этом-же классе "управление закладками" - uni_Tabs_new). Может поможет адаптер: Кликните здесь для просмотра всего текста
Добавлено через 4 минуты Считаете? Допустим у Вас на активити 30 кнопок. Они не вмещаются в экран. Приходится встраивать в скролл и долго листать вниз. Или... Сделать несколько закладок и раскидать кнопки по группам. Юзабилити повышается. Процедуры обработок кнопок не надо переписывать. Все в одном-же классе (общедоступные данные).
1
|
29.10.2014, 20:49 | |
29.10.2014, 20:49 | |
Помогаю со студенческими работами здесь
20
Смена названия кнопок в MsgBox Переменные названия кнопок в форме Изменить названия кнопок в MessageDlg Русские названия кнопок в Messagebox Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |