Простой вопрос для тех, кто хорошо понимает архитектуру кода
Простой вопрос для тех, кто хорошо понимает архитектуру кода
Т.к. мне уже пришлось ознакомиться с заморочистыми активити, фрагменты, фрагментдиалоги и т.д. я тут задумалась - как мне правильно построить код.
Алгоритм у меня такой (пишу образно, без тонкостей).
1. Главная активити.
ПО выбору одного из пунктов меню должно происходить следующая логика.
2. Диалог спрашивает у пользователя кое-что. Если ОК, то
3. Появляется активити, делает там свои дела, вызывает другие активити и т.д. Когда пользователь наконец-то отуда уходит кнопкой "назад"
4. Появляется еще одна активити. Тоже занимается своими делами, а когда пользователь и ее отменит кнопкой назад
5. Главная активити продолжает свою работу.
Раньше бы я с удовольтвием написала бы это все в одной процедуре, т.к. после завершения активити и тем паче диалогов мы возвращаемся в ту же самую процедуру.
А теперь, уже на шаге 2, после завершения диалога, я попадаю в процедуру onFinishDialog(). Да, там я могу почитать, что ввел пользователь, но как мне вернуться обратно, к процедуре, вызвавшей этот диалог в точку, где он был вызван?
Если же продолжить логику в другой процедуре - получится для меня лично плохо читаемый код - что где кончается и куда продолжается.
Мне надо как-то оформить шаги 2-4 в один хорошо читаемый код, без лишних заморочек.
Это возможно? как правильно это делается?
Пожалуйста, если кто-то захочет помочь, пишите попонятнее, а то я могу еще пару часов убить, разыскивая в гугле разные сокращения, чтобы убедиться, что мне это не подходит, или я не смогу это реализовать всилу своих способностей.
Алгоритм у меня такой (пишу образно, без тонкостей).
1. Главная активити.
ПО выбору одного из пунктов меню должно происходить следующая логика.
2. Диалог спрашивает у пользователя кое-что. Если ОК, то
3. Появляется активити, делает там свои дела, вызывает другие активити и т.д. Когда пользователь наконец-то отуда уходит кнопкой "назад"
4. Появляется еще одна активити. Тоже занимается своими делами, а когда пользователь и ее отменит кнопкой назад
5. Главная активити продолжает свою работу.
Раньше бы я с удовольтвием написала бы это все в одной процедуре, т.к. после завершения активити и тем паче диалогов мы возвращаемся в ту же самую процедуру.
А теперь, уже на шаге 2, после завершения диалога, я попадаю в процедуру onFinishDialog(). Да, там я могу почитать, что ввел пользователь, но как мне вернуться обратно, к процедуре, вызвавшей этот диалог в точку, где он был вызван?
Если же продолжить логику в другой процедуре - получится для меня лично плохо читаемый код - что где кончается и куда продолжается.
Мне надо как-то оформить шаги 2-4 в один хорошо читаемый код, без лишних заморочек.
Это возможно? как правильно это делается?
Пожалуйста, если кто-то захочет помочь, пишите попонятнее, а то я могу еще пару часов убить, разыскивая в гугле разные сокращения, чтобы убедиться, что мне это не подходит, или я не смогу это реализовать всилу своих способностей.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
не какого конкретного вопроса... так что отвечу что понял... создайте активити базовое от которого наследуйте все ваши активити, в базовом всегда запоминайте от куда и куда пришли... второй вариант реализовать глобальный бандл и перед вызовом какой либо активити писать в бандл от куда мы пришли и в след. активити парсить бандл.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
вы меня вообще неправильно поняли. Вопрос там конкретный.
Основное активити у меня есть, она под номером 1 стоит. Наследовать мне сложно, это раз (см. последний абзац), я и так с трудом уже понимаю логику всех моих "наследований" с фрагментами (там просто у меня уже есть две довольно сложные линии, из-за поворота экрана), а если у меня еще будут наследования, это воообще п-ц), причем я сам смысл наследования при этих обстоятельствах не понимаю совершенно.
А придумать как извратиться с бандлами или нет - это я и так придумаю. Мне надо знать как это ПРАВИЛЬНО делают, а не с помощью глобальных переменных.
Моя цель - читаемый код, ни с первым советом. ни со вторым я его не получаю, увы..
Основное активити у меня есть, она под номером 1 стоит. Наследовать мне сложно, это раз (см. последний абзац), я и так с трудом уже понимаю логику всех моих "наследований" с фрагментами (там просто у меня уже есть две довольно сложные линии, из-за поворота экрана), а если у меня еще будут наследования, это воообще п-ц), причем я сам смысл наследования при этих обстоятельствах не понимаю совершенно.
А придумать как извратиться с бандлами или нет - это я и так придумаю. Мне надо знать как это ПРАВИЛЬНО делают, а не с помощью глобальных переменных.
Моя цель - читаемый код, ни с первым советом. ни со вторым я его не получаю, увы..
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
перечитал всё таки ещё раз
2) используйте FragmentManager или ActivityManager для управления активностей;
3) переопределение о котором я писал в предыдущем сообщении;
P.S. как я сделал в своём приложении:
определил базовую активити в которой переопределил нужные мне методы и кнопку бек, так же храню там бандл, все остальные активити наследуются (extends) от главной активити и данные сохраняются в бандл, перед тем как открыть какое то активити вызывается не интент а мой метод goToActivity(_имя_нужной_активити) и стартует нужная мне активити, а через бандл я могу передать любую мне необходимую инфу.
P.P.S. возможно сложную систему я описал, но вы спросили, а я ответил.
решил написать понятнее, у меня используется табхост, но переписать пару строчек под активити не проблема:
1) обрабатывайте кнопку back и вызывайте нужное вам активити;Раньше бы я с удовольтвием написала бы это все в одной процедуре, т.к. после завершения активити и тем паче диалогов мы возвращаемся в ту же самую процедуру.
А теперь, уже на шаге 2, после завершения диалога, я попадаю в процедуру onFinishDialog(). Да, там я могу почитать, что ввел пользователь, но как мне вернуться обратно, к процедуре, вызвавшей этот диалог в точку, где он был вызван?
2) используйте FragmentManager или ActivityManager для управления активностей;
3) переопределение о котором я писал в предыдущем сообщении;
P.S. как я сделал в своём приложении:
определил базовую активити в которой переопределил нужные мне методы и кнопку бек, так же храню там бандл, все остальные активити наследуются (extends) от главной активити и данные сохраняются в бандл, перед тем как открыть какое то активити вызывается не интент а мой метод goToActivity(_имя_нужной_активити) и стартует нужная мне активити, а через бандл я могу передать любую мне необходимую инфу.
P.P.S. возможно сложную систему я описал, но вы спросили, а я ответил.
решил написать понятнее, у меня используется табхост, но переписать пару строчек под активити не проблема:
Код: Выделить всё
public class BaseActivity extends Activity {
private Bundle dataBundle = null;
private TypeActivity typeActivity; //enum для идентификации активити
//конструкторы и т.д.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK))
{
tabHost.setCurrentTabByTag(typeActivity.name());
return true;
}
return super.onKeyDown(keyCode, event);
}
public void gotoActivity(TypeActivity activity)
{
mainTabHost.setCurrentTabByTag(activity.name());
}
}
Код: Выделить всё
public class MainActivity extends BaseActivity {
//ваш код
}
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Круто, интересно, как вы до этого додумались?
Я вот сейчас понимаю, что у меня раньше (до java android) тоже было много подобного наворочено - там формы были до третьего-четвертого уровня наследования, но там я была уже давно в своей тарелке, не сразу стала так писать. А тут - я пишу, наверное, как первоклассник. Мало было времени на обдумывание. Но приложение, надеюсь, не будет сложным, поэтому это не большая потеря.. Я вижу новую среду и теряюсь, наверное, как будто я забыла все, что проделывала раньше. Система еще в голове не сложилась.
А можете написать хотя бы примерно как будет выглядеть в вашем случае вызов такой последовательности диалогов и активити как я написала?
У вас табы для какой-то искусственной цели, вместо ряда активити или табы как они есть?
Я вот сейчас понимаю, что у меня раньше (до java android) тоже было много подобного наворочено - там формы были до третьего-четвертого уровня наследования, но там я была уже давно в своей тарелке, не сразу стала так писать. А тут - я пишу, наверное, как первоклассник. Мало было времени на обдумывание. Но приложение, надеюсь, не будет сложным, поэтому это не большая потеря.. Я вижу новую среду и теряюсь, наверное, как будто я забыла все, что проделывала раньше. Система еще в голове не сложилась.
А можете написать хотя бы примерно как будет выглядеть в вашем случае вызов такой последовательности диалогов и активити как я написала?
У вас табы для какой-то искусственной цели, вместо ряда активити или табы как они есть?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
табы как они есть =)У вас табы для какой-то искусственной цели, вместо ряда активити или табы как они есть?
ну диалог вызывается как и всегда, в случае результата диалога грузим соответствующую активити (метод gotoActivity), и последовательности вызова активити нету, вы можете вызвать любое активити с любого места приложения, таким образом пропадает последовательность и у вас более развязаны руки как у разработчика.А можете написать хотя бы примерно как будет выглядеть в вашем случае вызов такой последовательности диалогов и активити как я написала?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Описанный метод вызова activity не совсем стандартный подход, но имеет место быть, если программист решит, что так будет удобнее для пользователей.
Если хотите писать тру-андроид приложения, то придерживайтесь рекомендаций гугла по оформлению интерфейса. И смотрите как построены гугловские приложения. Они сейчас тоже меняются, стараются обрести свое лицо. И если вы пользуетесь приложениями серьезных контор (тех, кто отмечен на маркете как лучший разработчик), то наверняка заметили, что они так же обновляют UI своих приложений, подгоняя их к стандартам оформления Андроид.
От панелей управления с кучей иконок как на рабочем столе сейчас отказываются, в пользу боковых панелей с меню, в дополнение к табам и Action Bar, думаю, в скором времени они также войдут в стандарт API Android. Ну а сама навигация (вызов activity) во всех случаях реализуется не в виде кнопок, а в виде элементов списков, этот механизм более гибок и его применяют везде и повсеместно, достаточно посмотреть примеры (ApiDemos).
Если хотите писать тру-андроид приложения, то придерживайтесь рекомендаций гугла по оформлению интерфейса. И смотрите как построены гугловские приложения. Они сейчас тоже меняются, стараются обрести свое лицо. И если вы пользуетесь приложениями серьезных контор (тех, кто отмечен на маркете как лучший разработчик), то наверняка заметили, что они так же обновляют UI своих приложений, подгоняя их к стандартам оформления Андроид.
От панелей управления с кучей иконок как на рабочем столе сейчас отказываются, в пользу боковых панелей с меню, в дополнение к табам и Action Bar, думаю, в скором времени они также войдут в стандарт API Android. Ну а сама навигация (вызов activity) во всех случаях реализуется не в виде кнопок, а в виде элементов списков, этот механизм более гибок и его применяют везде и повсеместно, достаточно посмотреть примеры (ApiDemos).
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Андрей, если это ко мне, то как-то странно, я про UI ничего не писала.AndreyI писал(а):Описанный метод вызова activity не совсем стандартный подход, но имеет место быть, если программист решит, что так будет удобнее для пользователей.
Если хотите писать тру-андроид приложения, то придерживайтесь рекомендаций гугла по оформлению интерфейса. И смотрите как построены гугловские приложения. Они сейчас тоже меняются, стараются обрести свое лицо. И если вы пользуетесь приложениями серьезных контор (тех, кто отмечен на маркете как лучший разработчик), то наверняка заметили, что они так же обновляют UI своих приложений, подгоняя их к стандартам оформления Андроид.
От панелей управления с кучей иконок как на рабочем столе сейчас отказываются, в пользу боковых панелей с меню, в дополнение к табам и Action Bar, думаю, в скором времени они также войдут в стандарт API Android. Ну а сама навигация (вызов activity) во всех случаях реализуется не в виде кнопок, а в виде элементов списков, этот механизм более гибок и его применяют везде и повсеместно, достаточно посмотреть примеры (ApiDemos).
Если бы вы меня знали, я бы оскорбилась)))) перед написанием проги первое, что я проштудировала - это вышеописанные вами ссылки. У меня в программе все, что сооветствует выбранному мною 14 апи и интерфейсу к нему Я с проектированием интерфейса возилась долго (хотя многого не добилась), чтоб даже напрашивающиеся контекстные меню логично убрать.
У меня вопрос был про внутренности, а с внутренностями на сайте девелопера - очень все запущено! Сколько раз натыкаюсь на устаревший код и код с ошибками, неполный (такое впечатление, что недоделаный). Если бы там были у них рекомендации по коду, я бы тут не опрашивала народ..
Наверное, надо какие-то фундаментальные труды по java лопатить.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Прошу прощения, что не так понял.
Если трудности с JAVA, то конечно, нужно знать хотя бы её основы.
Если трудности с JAVA, то конечно, нужно знать хотя бы её основы.
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Скорее, у меня трудности с проектированием на java, скажем так.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Это печально но всё зависит от заказчика. Вот присылает он дизайн и как хочешь но делай. А ещё печальней когда присылают дизайн слизанный с айфона и нужно делать так как у них. Было совсем иначе если бы были развязаны у разработчика руки на все 100%, а так всё выглядит иначе.Если хотите писать тру-андроид приложения, то придерживайтесь рекомендаций гугла по оформлению интерфейса. И смотрите как построены гугловские приложения.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Кто платит тот и музыку заказывает, тут никуда не денешься, хочет дизайн огрызка пусть и получает огрызок. Андроид еще очень молод в сравнении с другими, все стандарты оформления UI только формируются. Но когда пользователи начнут привыкать к этим стандартам заказчиков с подобными заявками поубавится. Пользователи никогда не державшие в руках огрызок не поймут в чем прикол такого интерфейса. Тут даже дело не в красоте или удобстве, а в привычках, которые у них сформируются при использовании других приложений на Андроид, а они могут оказаться сильнее понтов огрызка.
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
на девелопере видела целую статейку о параметрах интерфейса, где был справа дизайн (примеры) от ios, слева android, и было написано DON"T DO
Не знаю насколько такой заказчик уверен в таком желании, но я бы ненавязчиво убедила, что на андроиде так делать не стоит
Пользователей воспитываю много-примного лет, никто еще не сопротивлялся слишком долго. Они могу такого захотеть!
Вот когда мне давали задание, они хотели при вводе цифр в поле "пальчиком водить по экрану" - вверх - увеличивает количество на 1, вниз -уменьшает, как будет на сто плюс - они не задумываются. Спокойно делаю что считаю нужным, думаю, никто про пальчик не вспомнит.
http://developer.android.com/design/pat ... droid.html
Не знаю насколько такой заказчик уверен в таком желании, но я бы ненавязчиво убедила, что на андроиде так делать не стоит
Пользователей воспитываю много-примного лет, никто еще не сопротивлялся слишком долго. Они могу такого захотеть!
Вот когда мне давали задание, они хотели при вводе цифр в поле "пальчиком водить по экрану" - вверх - увеличивает количество на 1, вниз -уменьшает, как будет на сто плюс - они не задумываются. Спокойно делаю что считаю нужным, думаю, никто про пальчик не вспомнит.
http://developer.android.com/design/pat ... droid.html
Последний раз редактировалось Foenix 02 дек 2012, 18:12, всего редактировалось 1 раз.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Здесь всё зависит от рынка, если у вас заказчик западный (европа или сша) то он будет ориентироваться на айфон, и большинство заказчиков хотят идентичные приложения по дизайну, по этому приходится копировать весь функционал и дизайн с айфона.
Вот сейчас подкатила халтурка одному местному магазину нужно приложение под андроид, так как доля айфонщиков очень мала то его конечно интересует андроид, и здесь уже у меня развязаны руки.
Вот сейчас подкатила халтурка одному местному магазину нужно приложение под андроид, так как доля айфонщиков очень мала то его конечно интересует андроид, и здесь уже у меня развязаны руки.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
Заявите как паттерн! =))) А сначала напишите соответсвующий урок!!! А то я до конца не понялrezak90 писал(а):P.S. как я сделал в своём приложении:
определил базовую активити в которой переопределил нужные мне методы и кнопку бек, так же храню там бандл, все остальные активити наследуются (extends) от главной активити и данные сохраняются в бандл, перед тем как открыть какое то активити вызывается не интент а мой метод goToActivity(_имя_нужной_активити) и стартует нужная мне активити, а через бандл я могу передать любую мне необходимую инфу.
Re: Простой вопрос для тех, кто хорошо понимает архитектуру
это коммерческий код
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена