Список дублируется с навигацией из одного фрагмента и возвращением в NavigationComponents - PullRequest
0 голосов
/ 02 апреля 2020

во FragmentA () Я получаю данные из ранее фрагмента

class FragmentA():Fragment() {
 private lateinit var personList: MutableList<Person>

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        arguments?.let {
            personList = it.getParcelableArrayList<Person>("person") as MutableList<Person>
        }
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
      super.onViewCreated(view, savedInstanceState)

        if(personList.isEmpty()){
            showEmptyContainer()
        }else{
            recyclerAdapter.setItems(personList)
        }
}

Теперь этот код работает, когда я открываю FragmentA (), но теперь, если я go из этого фрагмента в FragmentB () и вернись, мои данные дублируются. Итак, я попытался очистить массив и настроить его снова

 class FragmentA():Fragment() {
     private lateinit var personList: MutableList<Person>
     private var backupList:MutableList<Person> = mutableListOf()

     override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            arguments?.let {
                personList = it.getParcelableArrayList<Person>("person") as MutableList<Person>
            }
        }

        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
          super.onViewCreated(view, savedInstanceState)

            if(personList.isEmpty()){
                showEmptyContainer()
            }else{
                backupList.clear()
                backupList = personList
                recyclerAdapter.setItems(backupList)
            }
    }

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

Как сохранить этот фрагмент personList при навигации вперед и нажатии кнопки назад?

Спасибо

1 Ответ

1 голос
/ 02 апреля 2020

Вы можете использовать onSaveInstance, а затем проверить onCreate, если ваш savedInstanceState не равен нулю, вот топи c, которая поможет вам установить его. onSaveInstanceState () и onRestoreInstanceState ()

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