У меня есть фрагмент (FRAG1) с моделью представления (VM1). Я создаю два новых экземпляра этого фрагмента в FragmentPagerAdapter для загрузки внутри ViewPager.
Viewpager присутствует внутри родительского фрагмента.
ViewModels в обоих экземплярах фрагмента не кажутся уникальными. Кажется, что оба экземпляра фрагмента имеют свойства экземпляра ViewModel, созданного во втором фрагменте, который инициализируется последним.
private inner class ItDeclarationFragAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm)
{
override fun getItem(position: Int): Fragment
{
return when (position)
{
0 -> ITDeclarationSummaryFragment.newInstance(false)
1 -> ITDeclarationSummaryFragment.newInstance(true)
else -> ITDeclarationSummaryFragment.newInstance(false)
}
}
override fun getCount(): Int
{
return 2
}
override fun getPageTitle(position: Int): CharSequence?
{
return when (position)
{
0 -> resources.getString(R.string.zpl_itDeclaration_tile)
1 -> resources.getString(R.string.zpl_itDeclaration_poi_title)
else -> resources.getString(R.string.zpl_reimbursements_summary)
}
}
}
Фрагмент создает новый создает экземпляр ViewModel в OnCreate ()
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
vm = ViewModelProvider.AndroidViewModelFactory.getInstance(activity!!.application).create(ITDeclarationSummaryViewModel::class.java)
vm.setRepository(getRepo())
vm.mIsPOI = arguments!![StringConstants.isPOI]!! as Boolean
}
Это позже установлено на Binding в OnCreateView ()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
{
mView = inflater.inflate(R.layout.declaration_summary_fragment, container, false)
mBinding = DeclarationSummaryFragmentBinding.bind(mView!!)
mBinding.model = vm
mBinding.setLifecycleOwner(this)
return mBinding.root
}
Но модели представлений в обоих фрагментах, похоже, сохраняют значения второго фрагмента. Они не кажутся отдельными и уникальными.
Например,
В модели представления есть логическое значение, которое ЛОЖНО в первой ViewModel и ИСТИНА во второй. Но после создания второй виртуальной машины модель представления фрагмента будет ИСТИНА.
Аналогично, наблюдатели LiveData в первой ViewModel не работают.
Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.