清单是从一个片段中导航并重复出现在NavigationComponents中的列表

问题描述 投票:0回答:1

在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()时,此代码有效,但是现在,如果我从此片段转到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?

谢谢

android android-fragments kotlin fragment android-navigation
1个回答
1
投票
您可以使用onSaveInstance,然后如果onCreate不为空,请签入savedInstanceState,以下主题将帮助您进行设置。onSaveInstanceState () and onRestoreInstanceState ()
© www.soinside.com 2019 - 2024. All rights reserved.