应该在哪里创建片段?在viewModel或Activity中?

时间:2019-06-19 22:57:08

标签: android mvvm kotlin

我正在尝试学习MVVM模式,并且正在使用它进行示例项目。但是我不知道应该在ViewModel或Activity中创建片段。

我已经在活动中创建了它们,但是每当轮播更改时,都会重新创建它们。这是我的代码:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val navView: BottomNavigationView = findViewById(R.id.nav_view)

        popularFragment = FragmentPopular()
        discoverFragment = FragmentDiscover()
        favoritesFragment = FragmentFavorites()

        setFragment(popularFragment)

        navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
    }

    fun setFragment(fragment: Fragment){
        supportFragmentManager.beginTransaction().replace(R.id.frame_main, fragment).commit()
    }

所以我该如何在ViewModel中创建它们,并且每当旋转更改时,片段应该保持不变。

1 个答案:

答案 0 :(得分:0)

  

我已经在活动中创建了它们,但是每当轮播更改时,都会重新创建它们

那很正常。

  

那么我该如何在viewModel中创建它们

你不知道。您给片段分配自己的ViewModelViewModel将在配置更改中保留。