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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Twi7ter
3 / 3 / 1
Регистрация: 27.03.2013
Сообщений: 147
#1

Одинаковые названия id для 2х кнопок - Программирование Android

26.10.2014, 21:37. Просмотров 1427. Ответов 24
Метки нет (Все метки)

Пишу приложение и там есть 2 xml файла,что то типа диалога,там я ввожу данные элемента которого хочу добавить в БД,так вот у меня на каждом из этих 2 xml файлов есть по кнопке Ok и Cancel, назвал id я на каждой кнопке btnOK и btnCancel,подскажите,пожалуйста,можно ли как то прописать чтоб я обращался к id конкретного xml файла,а то если через R.id обращаться ,то он 1е попавшееся значение берет ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2014, 21:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одинаковые названия id для 2х кнопок (Программирование Android):

Как поменять названия кнопок местами в Java? - Программирование Android
есть поле из 5 кнопок с числами(названиями кнопок) от 1 до 5. Помогите написать код для того чтобы менять местами числа(названия) кнопок...

TMainmenu названия кнопок - Delphi
Господа Написал программу с компонентом TMainmenu хочу сделать ее на разных языках, то есть мне нужно по необходимости поменять...

Изменить названия кнопок - Delphi
if MessageDlg('Вы действительно хотите удалить выбранный ингредиент?',mtWarning, mbOKCancel, 0) = mrOk then ...

Одинаковые package и названия классов - Java SE
Здравствуйте ув. пользователи данного форума, у меня следующая проблема. Существует класс MyClass в MyPackage и в myJar.jar, и второй...

Одинаковые названия функций QT и Socket - C++ Qt
Добрый день. Вопрос заключается в том, что мне нужно написать программу работающую с помощью сокетов с интерфейсом qt. Столкнулся с такой...

QInputDialog сменить названия кнопок - C++ Qt
Всем привет. Возможно ли в стандартном диалоге сменить названия кнопок (Cancel->Отмена )? Вызываю жиалог так: spDays =...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
28.10.2014, 20:12 #16
Все это хорошо, но мне кажется как то это кривовато или нет? Я сам порой так делаю, но всегда мучат сомнения. А за наводку на include действительно спасибо. Сразу вздохнул свободнее. Как я прошел мимо этого тэга.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
28.10.2014, 23:22 #17
Цитата Сообщение от dubok79 Посмотреть сообщение
Все это хорошо, но мне кажется как то это кривовато или нет? Я сам порой так делаю, но всегда мучат сомнения. А за наводку на include действительно спасибо. Сразу вздохнул свободнее. Как я прошел мимо этого тэга.
Пока все работает... Тег тоже в учебниках не встречал - обнаружил случайно в чужих исходниках. И действительно "задышалось легче" - мегасложные активити с сотней тегов смог разбить на логические не большие блоки.
И пока не встретил РЕАЛЬНОЙ необходимости плодить фреймы. Сейчас успешно избавился от них в android.support.v4.view.ViewPager. Хотя во всех учебниках примеры исключительно через фреймы. У меня получился лишь один внешний обработчик (на интерфейсах) который заполняет тело закладки. И потом я пользуюсь любым элементом любой закладки. И в закладках убрал их пересоздание - ОЧЕНЬ шустро получилось. И 30-50 элементов вполне логично смог разместить в одном активити. Включая список с настройками. А основной код (административный) оказался меньше 500 строк. Каждый элемент контролируется классами, а в основном вся управляющая логика, которую легко менять...
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
29.10.2014, 08:32 #18
Цитата Сообщение от Tester64 Посмотреть сообщение
Сейчас успешно избавился от них в android.support.v4.view.ViewPager.
Хм, интересно, а можно простенький пример?
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
29.10.2014, 15:11 #19
Цитата Сообщение от Tester64 Посмотреть сообщение
Например у меня была активити с 3мя закладками. В каждой закладке было от 10 элементов (кнопки, редакторы, галочки). Редактировать все это в одном файле - тяжело! Предварительный просмотр хватает только первую закладку.
Вот здесь как раз уместны фрагменты.
Цитата Сообщение от Tester64 Посмотреть сообщение
"Назад" обычно закрывает текущую активити. Но ее можно перехватить назначив свой обработчик. Там можно либо вызывать заново первое окно либо закрыть текущее назначив некий глобальный маркер прошлой что-бы тоже закрылав как только ей передадут фокус.. (сам такого пока не делал)
Во фрагментах это происходит подобным образом, но зато там легко можно сбросить произвольное количество фрагментов со стека и вернуться к нужному фрагменту, а после, например, и вовсе закрыть программу. Я пока не знаю, что происходило бы, если бы потребовалось закрыть 3 активности подряд одной кнопкой. Или они не кладутся в стек?
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
29.10.2014, 20:49 #20
Цитата Сообщение от Rube Посмотреть сообщение
Хм, интересно, а можно простенький пример?
Тяжело... Я сам не до конца понял как это получилось. Вынес ВСЮ математику в отдельный класс-хранилище. В этом-же классе хранится управление шапкой закладок как отдельным компонентом. Связь между элементам шапки и тела через строковые теги. Подключение ВСЕЙ конструкции в активити выглядит так:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        tabs_def = new uni_Tabs_new();
        tabs_def.InitHead(this, (LinearLayout)findViewById(R.id.ll_tabs_1),
                R.id.ll_Tab_1, R.layout.tab_header, R.id.ll_tab_main, R.id.tv_tab_text1, R.id.iv_tab_image1);
        tabs_def.setHead("tag0", "&nbsp<br><FONT COLOR='#66FF66'>Списки</FONT><br>&nbsp", 0, R.drawable.selector_tab_gray_black_green, null);
        tabs_def.setHead("tag1", "&nbsp<br><FONT COLOR='#FFFF66'>Отчеты</FONT><br>", 0, R.drawable.selector_tab_gray_black_yellow, null);
        tabs_def.setHead("tag2", "&nbsp<br><FONT COLOR='#FF6666'>Настройки</FONT><br>&nbsp", 0, R.drawable.selector_tab_gray_black_red, null);
        tabs_def.InitBody(this, (LinearLayout)findViewById(R.id.ll_tabs_1));
 
        uni_Tabs_new.OnFrameCreate onFrameCreate = new uni_Tabs_new.OnFrameCreate() { @Override public void onFrameCreate(View view, int position, String tag) {
            if (position == 0) {
// инициализация и заполнение элеметов ТЕКУЩЕЙ закладки...
// например обновление списков, заполнение надписей, отрисовывание графики
            } else if (position == 1) {
            } else if (position == 2) {
            }
        }};
        tabs_def.setBody("tag0", R.layout.inc_main_frame_1, onFrameCreate);
        tabs_def.setBody("tag1", R.layout.inc_main_frame_2, onFrameCreate);
        tabs_def.setBody("tag2", R.layout.inc_main_frame_3, onFrameCreate);
        tabs_def.selectById(0);

Отдельно выбираю (командой) вид анимации страниц из моей-же коллекции анимаций (в этом-же классе "управление закладками" - uni_Tabs_new).
Может поможет адаптер:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    private class AwesomePagerAdapter extends PagerAdapter {
 
        @Override public int getCount() {
            return getBodyCount();
            //return pBodyCount;
        } // количество закладок
 
        @Override
        public Object instantiateItem(ViewGroup collection, int position) {
            LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            body_class body = List_body.get(position);
            if (body == null) {
                return null;
            }
            View view = layoutInflater.inflate(body.ll_id, null);
            collection.addView(view,0);
            if (body.onCreate != null) body.onCreate.onFrameCreate(view, position, body.tag_name); // сразу после создания
            return view;
 
        }
 
        @Override
        public void destroyItem(ViewGroup collection, int position, Object view) {
            Rep.r("destroyItem["+position+"]", 3);
            body_class body = List_body.get(position);
            if (body == null) {
                return;
            }
            if (body.onDestroy != null) body.onDestroy.onFrameCreate((View) view, position, body.tag_name);
            collection.removeView((View) view);
        }
 
        @Override public boolean isViewFromObject(View view, Object object) { return (view==object); }
        @Override public void finishUpdate(ViewGroup arg0) {}
        @Override public void restoreState(Parcelable arg0, ClassLoader arg1) {}
        @Override public Parcelable saveState() { return null; }
        @Override public void startUpdate(ViewGroup arg0) {}
    }


Добавлено через 4 минуты
Цитата Сообщение от CoolMind Посмотреть сообщение
>> Например у меня была активити с 3мя закладками. В каждой закладке было от 10 элементов (кнопки, редакторы, галочки). Редактировать все это в одном файле - тяжело! Предварительный просмотр хватает только первую закладку.
Вот здесь как раз уместны фрагменты.
Считаете? Допустим у Вас на активити 30 кнопок. Они не вмещаются в экран. Приходится встраивать в скролл и долго листать вниз. Или...
Сделать несколько закладок и раскидать кнопки по группам. Юзабилити повышается. Процедуры обработок кнопок не надо переписывать. Все в одном-же классе (общедоступные данные).
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
03.11.2014, 17:37 #21
Привет!
Цитата Сообщение от Tester64 Посмотреть сообщение
Считаете? Допустим у Вас на активити 30 кнопок. Они не вмещаются в экран. Приходится встраивать в скролл и долго листать вниз. Или...
Сделать несколько закладок и раскидать кнопки по группам. Юзабилити повышается. Процедуры обработок кнопок не надо переписывать. Все в одном-же классе (общедоступные данные).
Вероятно, это не Android-приложение, потому что оно противоречит назначению мобильных устройств. Такое поведение свойственно разве что Web-формам и некоторым корпоративным приложениям. Однако если вы всё же решили такое сделать, то да, проще в одной активности. Можно и фрагментами, тоже не так уж сложно.
По теме фрагментов могу подсказать, где они нужны больше. Когда вы поворачиваете устройство (либо вместо смартфона берёте планшет) и хотите в горизонтальной ориентации разместить изображение по-другому. Нарисовать что-то дополнительное, поменять размеры, переделать таблицу и т.д.
Мрачный негр из уроков Coursera объяснит на примере:
https://class.coursera.org/android-002/lecture/27
https://class.coursera.org/android-002/lecture/29
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.11.2014, 07:25 #22
Цитата Сообщение от CoolMind Посмотреть сообщение
По теме фрагментов могу подсказать, где они нужны больше.
Опять-же не убедили... При повороте экрана или смене разрешения так-же помогую инклюды. Для горизонтали будет сделан отельный XML для активити, а инклюды внутри можно будет использовать в другом порядке. И програмно отключать лишние компоненты при обнаружении поворота...

Единствнную "нужность" которую вижу, но еще не проверил - это написание сложного составного компонента. Напимер сейчас пишу свой лист с адаптером, независимым скроллом и кнопками управления листером (добавление/правка элементов). И должен таскать с собой кучу инклюдов... Но не до конца уверен! Еще не делал, но кажется то-же делают и либы.

Цитата Сообщение от CoolMind Посмотреть сообщение
Такое поведение свойственно разве что Web-формам и некоторым корпоративным приложениям.
А я и пытаюсь специлизироваться на системные утилиты и корпоративные приложения - управление учетными системами. Мечтаю написать программы, аналогичные 1С но под андроид!
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
04.11.2014, 11:32 #23
Tester64, как говорится, это ваше право. Стандартный способ состоит в работе с фрагментами, а инклюды - это уже для профессионалов. Впрочем, одно другому не мешает, и, может быть, я тоже когда-то перейду на работу только с активностями.
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
04.11.2014, 13:33 #24
Tester64, а как вам такая ситуация - на экране в ScrollView 50 почти одинаковых вьюшек на каждой есть текст, пара кнопок и несколько картинок. У каждой из них одинаковый обработчик нажатий на кнопки, но еще к каждому нажатию нужно добавить что то свое, к примеру, при нажатии в AsyncTask'e выполняетя долгая и сложная операция строк на 500 и в какой то момент нужно у каждой кнопки выполнить свой метод + результат добавить на эту вьюшку в качестве картинки. Еще при создании каждой задать свой текст и цвет фона. С фрагментами я создам 1 абстрактный фрагмент, в конструктор приму текст и цвет фона, плюс добавлю абстрактный метод в AsyncTask. В итоге добавление каждой такой вьюшки займет 5-10 строк кода.
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.11.2014, 21:52 #25
Цитата Сообщение от CoolMind Посмотреть сообщение
Стандартный способ состоит в работе с фрагментами, а инклюды - это уже для профессионалов
Вах! Как круто мое непонимание технологии и использование (ИМХО) более простой и понятной сделало из меня профессионала!

Цитата Сообщение от Spelcrawler Посмотреть сообщение
а как вам такая ситуация - на экране в ScrollView 50 почти одинаковых вьюшек на каждой есть текст, пара кнопок и несколько картинок. У каждой из них одинаковый обработчик нажатий на кнопки, но еще к каждому нажатию нужно добавить что то свое, к примеру, при нажатии в AsyncTask'e выполняетя долгая и сложная операция строк на 500 и в какой то момент нужно у каждой кнопки выполнить свой метод + результат добавить на эту вьюшку в качестве картинки. Еще при создании каждой задать свой текст и цвет фона. С фрагментами я создам 1 абстрактный фрагмент, в конструктор приму текст и цвет фона, плюс добавлю абстрактный метод в AsyncTask. В итоге добавление каждой такой вьюшки займет 5-10 строк кода.
Уже столкнулся с подобным! Поэтому внимательно смотрю в строну фрагментов и пыаюсь понять чем они лучше...
Пишу учетную программу (сбор данных заполнением юзером сложных формочек). Каждый элемент часто представляет из себя редактор текствого поля, с названием/описанием поля и несколькими кнопками - вызов калькулятора для цифр, очтстка поля, установка начального значения...
Пока сделал так:
в LinearLayout с id подключаю инклюд с заготовкой
инициализацию/заполнение инклюда вынес в отдельную процедуру (возможно отдельного класса).
Само запонение получаетя одной функцей с указанием внешнего id и указанием параметра...
Причем весь редактор оформляется классом (для удобства обращения и выноса редких методов манипуляции) и можно обьединить их все с формы в одну таблицу и каждой присвоить руское название для обращения и изменения избранных реквизитов редактора. Например нечто вроде editlist.seachByNameRu("Коментарий").setDefVal("патамушта"); Не уверен что фрагменты на это нормально среагируют. А инициализация вроде editlist.add(R.id.ll_comment, "Коментарий", "без коментариев", 0xFF00FF00);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2014, 21:52
Привет! Вот еще темы с ответами:

Смена названия кнопок в MsgBox - Visual Basic .NET
Здравствуйте! Возможно ли в msgbox задать свои названия кнопок, т.е. вместо &quot;Да&quot; &quot;Нет&quot;, было &quot;До&quot;...

Одинаковые названия столбцов в таблицах и JOIN - PHP БД
Привет, мир. Имеються 2е таблицы: tb1 |id|name|... tb2 |id|name|id_tb1|... и запрос $res= mysql_query('SELECT * FROM tb1...

Названия кнопок меню постоянно мерцают - C (СИ)
Здравствуйте, пишу меню с использованием мышки, на Турбо Си, проблема в том что названия кнопок меню постоянно мерцают, а сами кнопки не...

Возможно ли поменять у конфирма названия кнопок потверждения OK и Отмена? - JavaScript
Возможно ли поменять у конфирма названия кнопок потверждения OK и Отмена или хотябы перебросить фокус с кнопки ОК на кнопку Отмена?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.11.2014, 21:52
Ответ Создать тему
Опции темы

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