Вопрос

Как вы думаете, это лучший способ создания приложения, подобного мастеру (пользователь может перемещаться между экранами с помощью кнопки «Далее» и «Назад», и на каждом экране необходимо сохранять данные о состоянии) на платформе Android.

Я в основном могу думать двумя способами:

<Ол>
  • Наличие одного вида активности + вида для каждого экрана, а затем я переключаю экран, вызывая каждое действие. Что приятно, так это то, что я могу использовать системную кнопку «назад» в качестве обработчика спины, и мне не нужно заботиться об этом самостоятельно, так как каждое действие будет сохранять свое собственное состояние.

  • Имея одно действие и несколько представлений, и то, что я переключаю представления при каждом изменении экрана, это помогает мне повторно использовать больше кода, но делает сохранение состояний беспорядочным.

  • Что ты думаешь? Какой лучший способ сделать это на Android?

    Это было полезно?

    Решение

    Я предлагаю перейти с 2, поскольку это соответствует цели действий и взглядов. Сохранение состояния в этом случае легко - если вы используете шаблон MVC, вы можете просто иметь объект модели, который передается в представления. Каждое представление будет иметь части модели, которые он может читать / записывать. Независимо от того, где вы находитесь, модель всегда должна иметь текущее состояние. Если вы избавитесь, просто сохраните модель. Восстановление работает автоматически, так как вы уже читали с модели при показе каждой страницы.

    Другие советы

    Я разработал облегченную библиотеку Android, которая построена на основе Android ViewPager и может использоваться для создания действий, подобных мастеру. Проверьте это: WizarDroid .

    Я выбрал первый подход, поскольку он кажется более естественным. Другое приложение использует ViewFlipper для переключения видов, но это далеко не так, как в мастере.

    Я думаю, что 2 лучше. Разместите каждую "страницу" в представлении, а затем просто чередовать их показ и скрытие. Делает это тривиально, чтобы сделать хорошие переходы. Какое состояние вы думаете о поддержании? Единственное, что не работает автоматически, это фокус, и я думаю, что вы, вероятно, захотите сбросить его каждый раз, когда вы переключаете страницы. Также легко вернуться к исходному состоянию, если вы считаете, что это правильное поведение для вашего приложения.

    С помощью 1 вы можете повторно использовать почти весь ваш код (просто определите свой собственный класс WizardBase), но я думаю, что действия намного медленнее запускаются (и требуют больше памяти), чем переключение между представлениями.

    9 лет назад это был, очевидно, совсем другой котелок с рыбой - но я думаю, что лучший способ сделать это сейчас - это использовать фрагменты.

    Иметь фрагмент для каждой «страницы» в мастере, позволяя ему обрабатывать свой собственный жизненный цикл и состояние.

    Измените страницу внутри каждого фрагмента с помощью Fragment.getFragmentManager ( ) - это возвращает FragmentManager из родительского Activity, позволяя Fragment заменять себя.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top