На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Hsilgos
  
> Дополнительные формы в приложении Android , Как создавать? + вопрос по литературе по Android
    Всем привет!

    Продолжаю разрабатывать Android-приложение для сдужбы такси. Так как это мое первое Android-приложение, опыт начинаю набирать с нуля, до этого только с Java для PC работал. Сейчас уже надо бы разметить каркас приложения. Одной формой тут не обойтись, всякие настройки и диалоги должны быть выполнены в отдельных формах (называю так по аналогии с формами в Delphi/С++ Builder). Вот сам вопрос: как лучше создавать эти диалоги? Если, конечно, есть альтернативы.

    В книге Алексея Голошапова по программированию для мобильных устройств вычитал, что для создания диалогов используется методов деятельности showDialog(). Соответственно, в переопределяемом методе onCreateDialog() можно загрузить лэйаут диалога из ресурсов, настроить его и вернуть как результат объект этого диалога. Но диалог, который создается в программном примере, лишь частично перекрывает главную форму. А мне бы хотелось, чтобы этот диалог разворачивался на весь экран, мне кажется, так будет как-то удобнее, так как главная форма во время работы диалога будет не нужна (ну перекроется пара вьюх-индикаторов, но это не будет большой потерей). Как это сделать?

    Либо, может есть какой-то другой способ создать и показать форму, чей лэйаут набросан в ресурсах?

    Еще, Дамы и Господа, может, кто-нибудь подскажет хорушую литературку по программированию для Android. Во-первых, книга Головошапова у меня в виде сканированного но нераспознанного текста в pdf, так что крайне неудобно пользоваться, содержания также нет, которое можно было бы отдельно просмотреть, чтобы переходить по его ссылкам. Во-вторых, мне не очень нравится подача материала, очень символические примеры (например, по сравнению с книгой Хорстмана по Java, читать которую у меня составило большое удовольствие).

    Заранее всем спасибо!
      Читани вот это http://developer.alexanderklimov.ru/android/ много интересного, я сам начинающий
        Ну, ресурс вообще-то не очень богатый, я там не нашел особо чего-то большего, чем в книге, которая у меня лежит в электронном виде, хотя, наверно, примеры поинтереснее, не бесплотные. Но вот ответа на мой вопрос по другим окнам в приложении нет. Есть пример диалога кастомного, но он не на весь экран, как бы я хотел.
          Превед!

          Альтернативы такие:
          1) Наследоваться от Dialog
          2) Использовать что то типа AlertDialog:
          ExpandedWrap disabled
            LinearLayout dialogLayout = (LinearLayout) ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.numberpeacker, null);
                    Builder builder = new AlertDialog.Builder(this);
             
                    builder.setView(dialogLayout);
                    builder.setTitle("Hello");
             
                    builder.create().show();

          3) Использовать отдельные активити в качестве диалога, добавив её в манифест и стартуя при помощи StartActivity or StartActivityForResult
          4) Если собираешся поддерживать 3.х и выше на планшетах, или же есть желание использовать пакет совместимости, то можно использовать Fragments

          Добавлено
          Цитата jaroslav.zp.ua @
          Читани вот это http://developer.alexanderklimov.ru/android/ много интересного, я сам начинающий

          Ага, именно если начинающий, то надо начинать читать всякий шлак. Есть только один правильный ресурс, и на нём тоже примеров завались. Более того, все примеры есть в SDK.

          http://developer.android.com/guide/index.html
            Цитата Британский учёный @
            2) Использовать что то типа AlertDialog:

            А смысл использовать AlertDialog, коли ему подпихивать свой ресурс? Уж тогда лучше прямо использовать Dialog.

            Цитата Британский учёный @
            3) Использовать отдельные активити в качестве диалога, добавив её в манифест и стартуя при помощи StartActivity or StartActivityForResult

            Вот пример бы хорошо увидеть.

            Цитата Британский учёный @
            4) Если собираешся поддерживать 3.х и выше на планшетах, или же есть желание использовать пакет совместимости, то можно использовать Fragments

            Ну я сейчас остановиля на платформе 2.1. Повышать до 3 как-то не гут - наверно, много девайсов просто этим срежутся.

            Добавлено
            Цитата Британский учёный @
            3) Использовать отдельные активити в качестве диалога, добавив её в манифест и стартуя при помощи StartActivity or StartActivityForResult


            Гм, при запуске же отдельной деятельности ранее активная деятельность становится на паузу. Что будет при этом, например, с функционированием таймера? Это важно, так как каждые 10 секунд моя прога должна посылать GPS-координаты экипажа такси на сервер.

            Ну хотя я вообще еще не очень сильно представляю жизненный цикл приложения на Android. Точно знаю, что он СОВЕРШЕННО не такой, как скажем, у приложений Windows (например, активность, ушедшая на бэкграунд может быть в какой-то момент запросто выгружена). Надо будет это хорошо прояснить, например, что будет с приложением, если пользователь, скажем, переключится на звонок или захочет отправить кому-то SMS.
              Цитата Homez @
              А смысл использовать AlertDialog, коли ему подпихивать свой ресурс? Уж тогда лучше прямо использовать Dialog.

              Так там можно стандартные кнопочки заюзать, будет иметь вид как системный.
              Цитата Homez @
              Вот пример бы хорошо увидеть.

              Так а что там примерять то?
              1) Создаёшь активити
              2) В первой активити пишешь:
              ExpandedWrap disabled
                Intent intent = new Intent();
                intent.setClass(this, NewActivity.class);
                intent.putExtra(параметры);
                startActivity(intent);


              Цитата Homez @
              Ну я сейчас остановиля на платформе 2.1. Повышать до 3 как-то не гут - наверно, много девайсов просто этим срежутся.

              Есть пакет совместимости http://developer.android.com/sdk/compatibility-library.html

              Добавлено
              Цитата Homez @
              Гм, при запуске же отдельной деятельности ранее активная деятельность становится на паузу. Что будет при этом, например, с функционированием таймера? Это важно, так как каждые 10 секунд моя прога должна посылать GPS-координаты экипажа такси на сервер.

              Опа, уже бага у тебя! Всю такую функциональность надо выносить в сервис или AsyncTask. Иначе словишь ANR.

              Цитата Homez @
              Надо будет это хорошо прояснить, например, что будет с приложением, если пользователь, скажем, переключится на звонок или захочет отправить кому-то SMS.

              OnPause как минимум
                Цитата Британский учёный @
                Гм, при запуске же отдельной деятельности ранее активная деятельность становится на паузу. Что будет при этом, например, с функционированием таймера? Это важно, так как каждые 10 секунд моя прога должна посылать GPS-координаты экипажа такси на сервер.

                Опа, уже бага у тебя! Всю такую функциональность надо выносить в сервис или AsyncTask. Иначе словишь ANR.


                Ага... Но пока у меня ближайшая цель - набросать каркас приложения. В конечном продукте, конечно, таких багов быть не должно.

                А что такое ANR?

                Добавлено
                Цитата Британский учёный @
                Так а что там примерять то?
                1) Создаёшь активити
                2) В первой активити пишешь:

                Intent intent = new Intent();
                intent.setClass(this, NewActivity.class);
                intent.putExtra(параметры);
                startActivity(intent);


                Ну это я уже видел. Но между двумя деятельностями же может быть большое пересечение по данным - в моей программе. Вот потому и хотелось бы увидеть живой полноценный пример, где бы такое было, а не упрощенный, как скажем, просто открытие почтовой программы для отправки сообщения по определенному адресу.
                  Лучше делать всё на отдельных активностях + фоновые процессы (под GPS и так далее).
                  Но тут надо активити рассматривать как отдельные приложения (так проще понять), а инфу между ними гонять в намерениях или передавать через локальную БД. В общем, сначала накидай прототип/ТЗ на функционал приложения, покажи сюда, а только потом лезь разрабатывать.
                    Чем это лучше диалогов?
                      Точно ничем не хуже:

                      + разворачивается в полный экран
                      + стек активностей (кнопка назад работает)
                      + весь интерфейс описывается в XML
                      +++ можно распараллелить разработку приложения между разработчиками
                        Цитата RaD @
                        + весь интерфейс описывается в XML

                        Ну и диалог можно описать в XML.

                        Цитата RaD @
                        + стек активностей (кнопка назад работает)

                        А вот этого как бы и не надо, хотелось бы, чтобы все дополнительные формы были модальные.

                        Добавлено
                        То есть хотелось бы, скажем, из диалога настроек возвращаться на главную форму только по нажатии кнопки OK или Отмена.
                          Цитата Homez @
                          А что такое ANR?

                          http://developer.android.com/guide/practic...onsiveness.html

                          Цитата Homez @
                          Но между двумя деятельностями же может быть большое пересечение по данным - в моей программе.

                          Та сколько угодно. Просто передаёшь параметры через интент, а потом в новой активити перед выходом делаешь setResult()
                            А, ясно, посмотрел, что из деятельности можно вернуть такой же интент. Хорошо, а как сделать, чтобы дополнительная деятельность была именно модальной, то есть, нельзя бы было из нее вернуться в основную каким-нибудь другим способом, кроме как нажав кнопку вроде OK или Отмена?
                              Можно обрабатывать кнопку "Back", на я бы за такое убивал.
                                И что, иначе никак?
                                  Цитата Homez @
                                  что из деятельности

                                  OMG! Активити это, а не деятельность!

                                  Цитата Homez @
                                  Хорошо, а как сделать, чтобы дополнительная деятельность была именно модальной, то есть, нельзя бы было из нее вернуться в основную каким-нибудь другим способом, кроме как нажав кнопку вроде OK или Отмена?

                                  Ну вот и юзай алерт билдер :) Или кнопка back
                                    В чем смысл модальности? Ну вернулся пользователь на предыдущий экран, считаем нажал отмену. Это, по крайней мере, логично.
                                      Цитата Британский учёный @
                                      OMG! Активити это, а не деятельность!

                                      В книге, которой я иногда пользуюсь, Шаповалова, эта штука называется деятельностью, и это все-таки русское слово, я предпочитаю пользоваться русскоязычными терминами.
                                      Скрытый текст
                                      Например, ненавижу, когда потоки в Windows-приложении называют тредами.


                                      Цитата Британский учёный @
                                      Ну вот и юзай алерт билдер

                                      Хорошо, а как тогда ращвернуть диалог на весь экран? Собственно, уже долго мне хотелось бы это услышать.

                                      Цитата Британский учёный @
                                      Или кнопка back

                                      Вы имеете ввиду - запрещать действие по кнопке back?

                                      Добавлено
                                      Ага, RaD, может, Вы и правы. Как-то я об этом не подумал:)
                                        Цитата Homez @
                                        я предпочитаю пользоваться русскоязычными терминами.

                                        Только тебя никто не поймёт.
                                        Цитата Homez @
                                        Хорошо, а как тогда ращвернуть диалог на весь экран? Собственно, уже долго мне хотелось бы это услышать.

                                        На весь не получится, ибо это таки диалог, но развернуть можно: http://stackoverflow.com/questions/2306503...-of-screen-size

                                        Цитата Homez @
                                        Вы имеете ввиду - запрещать действие по кнопке back?

                                        Да.
                                          Ну только как тогда отлавливать возврат к главной Activity по кнопке back, чтобы уничтожать дополнительную или что-то там еще нужное делать, что делалось, если бы пользователь нажал кнопку Отмена?
                                            Цитата Homez @
                                            Ну только как тогда отлавливать возврат к главной Activity по кнопке back, чтобы уничтожать дополнительную или что-то там еще нужное делать, что делалось, если бы пользователь нажал кнопку Отмена?

                                            Короче, делай 2 активити, и лови результат, всё.
                                              Британский учёный, RaD, спасибо за советы, пояснения, информацию! Сейчас наконец доделал Activity, в котором задается одна важная настройка программы, этот Activity вызывается из меню. Провозился долго, есть всякие нюансы, что-то я прошляпил, но в итоге сделал! А без Вашей помощи, даже не знаю, на какой бы я стадии сейчас был... Надеюсь, дальше пока будет легче - буду добавлять в программу другие настройки по подобию.

                                              P.S. Добавленная только что настройка была пользовательским ключом к системе. Как только я убедился, что задал в сеансе работы правильное значение, вызываемый серверный скрипт стал возвращать OK, что говорит от том, что данные он благополучно принимает по этому ключу.
                                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                              0 пользователей:


                                              Рейтинг@Mail.ru
                                              [ Script execution time: 0,0852 ]   [ 15 queries used ]   [ Generated: 17.06.24, 03:21 GMT ]