Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
androman
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 29
1

Два layout в одном java-файле

13.03.2017, 08:35. Просмотров 451. Ответов 18
Метки нет (Все метки)

Java
1
2
setContentView(R.layout.activity_main);
setContentView(R.layout.activity_second);
Могу ли я так, в одном java-файле два активити прописать?

Или эту задачу можно решить только добавив второй java-файл?

Добавлено через 54 минуты
Т.е надо сделать так, чтобы когда загружался java-файл, он загрузил два layout-а - один спереди, а второй сзади. Первый должен перекрывать полностью второй.

Добавлено через 1 час 41 минуту
Тут я неправильно описал проблему - не два layout-а, а два активити. ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2017, 08:35
Ответы с готовыми решениями:

Два layout в одном activity
Добрый день, господа! такая вот проблемка: public void onCreate(Bundle...

Изменения параметров layout-файла java-классом
Хочу изменить layout-файл(xml) java-классом, то есть не в самом xml добавлять...

Существует ли программа для перевода layout-xml в java класс?
Я вбиваю туда свой layout, а она даёт пример реализации этого layout, но через...

Анимированный дизайн смены Layout или просто выдвигаемый layout
Ну, думаю тут и так всё понятно. Я просто не знаю, какие ключевые слова вводить...

Не хочет работать в layout, но включается в layout-land
доброе утро ! пишу первое приложение. обычный мейн.хмель выглядит вот так :...

18
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,950
13.03.2017, 09:55 2
androman, вы говорите что-то несусветное
0
androman
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 29
13.03.2017, 10:07  [ТС] 3
В другом форуме говорят следующее -
Java
1
 Да хоть 99.. только соблюдайте правил Java. Т.е. если первая zz.xx.ActivityOne то вторая zz.xx.ActivityOne.ActivityTwo и никак иначе)
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
13.03.2017, 10:14 4
Цитата Сообщение от vxg Посмотреть сообщение
вы говорите что-то несусветное
- мягко сказанно.
Цитата Сообщение от androman Посмотреть сообщение
один спереди, а второй сзади
- Для этого есть куча решений. например использовать фрагмент.
Цитата Сообщение от androman Посмотреть сообщение
а два активити
- зачем вам два активити? активити, это что то, что нужно использовать только если действительно есть обоснованная в этом потребность, если приложение "маленькое" то больше одной активити нет смысла использовать.
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,950
13.03.2017, 10:16 5
androman, я к тому что вы задаёте вопрос вида "что выше: тяжёлый кирпич или красное яблоко?"
0
androman
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 29
13.03.2017, 10:48  [ТС] 6
Задача заключалась вот в этом.

Есть два активити - первая передняя и вторая сзади. На втором некоторые функций запускаются взависимости от размера вью, которые на нем расположены. И запускаются они во время onCreate() Если я сразу загружу вторую, то посыпятся ошибки так как все параметры вью во время onCreate равны нулю. Поэтому загружаю первый активити. На нем есть кнопка ЗАПУСК, которая запускает второй активити.

Можно ли с помощью упомянутых фрагментов решить эту задачу?

Добавлено через 7 минут
Вообще-то прога уже работает нормально по той механике который я описал выше. Просто хотел узнать - правильно ли это со стороны правописания кода? Чтобы потом никто не говорил, что у меня руки кривые.

Под активити я имею ввиду layout-ы, которые так и называются activity_main.xml, activity_second.xml.
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
13.03.2017, 11:23 7
обьясните немного подробней задачу и постараемся помочь вам с дизайном.
кроме этого, если обьекты равны null, значит нужно добавить проверку на наль, и решить что делать если они наль.
и да фрагменты решат эту проблему но это мало связанно с вашей проблемой

Добавлено через 34 минуты
Цитата Сообщение от androman Посмотреть сообщение
правильно ли это со стороны правописания кода? Чтобы потом никто не говорил, что у меня руки кривые.
не правильно. менять лайауты активити это не правильно.
0
Vladimir93
54 / 57 / 9
Регистрация: 28.06.2015
Сообщений: 249
13.03.2017, 13:02 8
Цитата Сообщение от androman Посмотреть сообщение
Под активити я имею ввиду layout-ы, которые так и называются activity_main.xml, activity_second.xml.
Активити, это вообще то класс, наследованный от Activity. То о чем вы пишите это разметка.
Вообще размету не меняют так setContentView(R.layout.activity_main);
В вашем случае, можно сделать, один FrameLayout в который будут вложены, две LinearLayout, например.
И в зависимости от условий, отображать либо первый LinearLayout либо второй.
Так же можно заморочиться с фрагментами, но они по сложнее.
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
13.03.2017, 13:06 9
Цитата Сообщение от Vladimir93 Посмотреть сообщение
В вашем случае, можно сделать, один FrameLayout в который будут вложены, две LinearLayout, например.
Представляете что будет твориться в самом классе если в нем будет 2 вью и у каждого вью свои элементы которые должны обрабатываться в зависимости от того какой вью показан
0
vxg
Модератор
3252 / 2052 / 323
Регистрация: 13.01.2012
Сообщений: 7,950
13.03.2017, 13:10 10
Цитата Сообщение от shavuz Посмотреть сообщение
что будет твориться
свежий вариант кстати, надо будет попробовать)
0
demixdn
310 / 255 / 79
Регистрация: 31.10.2016
Сообщений: 619
13.03.2017, 15:33 11
Цитата Сообщение от shavuz Посмотреть сообщение
Представляете что будет твориться в самом классе если в нем будет 2 вью и у каждого вью свои элементы которые должны обрабатываться в зависимости от того какой вью показан
Да легко. Создается 2 класса, которые работают только с этими вьюшками, инициализируются в Activity. И остается лишь переопределить в этих классах только методы lyfecycle от activity и все. Всю свою логику работы они оставляют внутри себя. И обратно возвращать по callback какие-то данные или события. По сути работу с View ты делегируешь кому-то. Есть даже пару либ, если не хочешь сам заморачиваться. Гуглить по "View based application".
1
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
13.03.2017, 15:37 12
Цитата Сообщение от demixdn Посмотреть сообщение
Да легко.
все правильно, но для работы с вью, если ты используешь какой то кастомный вью, набор кнопок например , отличное и правильное решение. но в конкретном случае требуется заменить вью активити, зачем тогда придумали фрагмент?
0
demixdn
310 / 255 / 79
Регистрация: 31.10.2016
Сообщений: 619
13.03.2017, 15:48 13
shavuz, Fragment это и есть view по сути, но слишком утяжеленный. Весь контекст фрагмента передан ему от Activity, все методы Lifecycle отнаследованы от Activity, но добавлены еще несколько, которые показывают, приаттачен ли view из фрагмента в контейнер в activity. И многие плюются на фрагменты, и ищут альтернативы. Если будет время, посмотрите на Conductor, прикольная штука, заменяет фрагменты, но уже без ошибок, типа такой. Не то чтобы пропагандирую, но расширяет кругозор и начинаешь обо всем думать просто как об обертке над view.
1
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
13.03.2017, 15:57 14
посмотрел. интересно, позже попробую демо, спасибо
0
Vladimir93
54 / 57 / 9
Регистрация: 28.06.2015
Сообщений: 249
14.03.2017, 10:23 15
Цитата Сообщение от shavuz Посмотреть сообщение
все правильно, но для работы с вью, если ты используешь какой то кастомный вью, набор кнопок например , отличное и правильное решение. но в конкретном случае требуется заменить вью активити, зачем тогда придумали фрагмент?
Что вы имеете ввиду пот вьюв? Файл разметки будет один. Как я уже сказал это будет фрейм с двумя линеарам внутри. Все. А код так же в одной активити, никакой путаницы, все по порядку. Только через Висибл отображать первый или второй лайот.
А фрагменты, ну каждый по разному думает, зачем они. Меня, например, не радуют, ибо раньше, было достаточно активити, а теперь обязательно на неё нужно лепить фрагмент, ибо половина методов активити - устарела (хотя на фрагменте эти методы такие же ).
Теперь еще и данные нужно все время гонять между активити и фрагментом, и следить за их жизненными циклами, короче возни больше, а эффект почти тот же.
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
14.03.2017, 10:38 16
Цитата Сообщение от Vladimir93 Посмотреть сообщение
Как я уже сказал это будет фрейм с двумя линеарам внутри. Все. А код так же в одной активити, никакой путаницы, все по порядку.
как это может быть без путаницы и попорядку если один класс (активити) будет обрабатывать разные вью? отличный пример привели ранее с кондуктором, но это не то что вы предлагаете.
0
Vladimir93
54 / 57 / 9
Регистрация: 28.06.2015
Сообщений: 249
14.03.2017, 11:02 17
У Android даже есть и такая фишка причем она не устаревшая - TabHost, вкладки на одной вьюшке, обработка в одной активити, гугл посчитал что путаницы не будет. Опять же методы то будут у каждой вьюшки свои.
Я опять таки не претендую на истину, но как вариант лучше чем весь контейнер менять. А так да, с фрагментами нужно заморачиваться.
Или две активити сделать. Почему бы и нет. Самый простой вариант.
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
14.03.2017, 11:13 18
ТС два слова связать не может, но вбросил и смотался, а вы спорите на ровном месте даже не имея примера разметки
0
ExFau$t
568 / 512 / 115
Регистрация: 08.05.2012
Сообщений: 2,548
14.03.2017, 11:13 19
Vladimir93, уж лучше две активити, чем то, что ты сказал. Две разметки в одном xml, одна визибл - другая нет, бррр. Таким макаром, можно вообще всю разметку приложения в один файл залить, да менять видимость периодически, круто, ничего не скажешь.
0
14.03.2017, 11:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2017, 11:13

At android.widget.LinearLayout.setChildFrame Layout в Layout-те
Нужен совет бывалых. У меня есть активити которое запускается с мейн активити,...

Два онКликЛисенера на одном FAB?
есть такой код: fab.setOnClickListener(new View.OnClickListener() { ...

Два сервиса в одном приложении
В программе был один сервис - перезапускался если смахнуть со шторки и если...


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

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

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