Компонент «Архитектура навигации Android» позволяет избежать фрагментирования - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть следующий поток, где в содержимом фрагмента есть форма с различными полями ввода.

Фрагмент A -> Фрагмент B -> Фрагмент C -> Фрагмент D ...

, когдапользователь, например, полностью заполнил Frag C и вернулся к Frag B, все данные Frag B сохраняются и сохраняются как неповрежденные, но при переходе назад к C все входные данные исчезают.Представьте себе тот же сценарий: пользователь заполнил Frag A, B, и он заполнил половину полей Frag C, и он решил вернуться к Frag A, когда он перемещается назад, все входные данные не повреждены в предыдущих Frags (B иA), но как только он решает вернуться назад к C, где он был, данные из B и C теряются и заменяются новым фрагментом каждый новый шаг.Таким образом, входные данные сохраняются только при возврате (кнопка возврата Android), когда он открывает Фрагмент там, где он уже был ранее, создается новый Фрагмент со всем вводом как пустым.Можно ли сохранить фрагмент как уникальный, когда пользователь перемещается назад или движется вперед к нему в компоненте архитектуры навигации?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Сохранить вид в переменной и проверить, если вид! = Ноль, а затем накачать

  private var mView: View? = null

  override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                            savedInstanceState: Bundle?): View? {
    return if(mView == null) {
      val v = inflater.inflate(R.layout.chat_fragment, container, false)
      initializeView(v)
      mView = v
      v
    }else{
      mView
    }
  }
0 голосов
/ 11 декабря 2018

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

Как реализовать ViewModel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...