【发布时间】:2021-01-17 16:55:52
【问题描述】:
我有一个工作 Activity (TwalksRouteActivity),它接受来自 bundle 的记录 id (routeID)(从 Fragment 传递),从我的存储库 (routesRepository) 中提取关联的记录,并传递关联的值/列 (routeName)到我的用户界面。这工作正常。但是,据我了解最佳实践(我正在学习 Android 开发),对我的存储库的调用应该在 ViewModel 中,而不是在 Activity 中。它是否正确?我自己尝试过但未能做到这一点,非常感谢有关如何做到这一点的帮助。
TwalksRouteActivity:
class TwalksRouteActivity() : AppCompatActivity() {
private lateinit var viewModel: RouteViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//Log.i("CWM","Called ViewModelProvider")
//viewModel = ViewModelProvider(this).get(RouteViewModel::class.java)
var bundle: Bundle? = intent.extras
var routeID = bundle?.getInt("routeID")
lifecycleScope.launch (Dispatchers.Main) {
val database = getDatabase(application)
val routesRepository = RoutesRepository(database)
val selectedRoute = routesRepository.getRoute(routeID)
val routeName = selectedRoute.routeName
Log.d("CWM", routeName.toString())
setContentView(R.layout.route_detail)
val routeName_Text: TextView = findViewById(R.id.routeName_text)
routeName_Text.text = routeName.toString()
val routeID_Text: TextView = findViewById(R.id.routeID)
routeID_Text.text = routeID.toString()
}
}
}
【问题讨论】:
标签: android kotlin android-activity repository viewmodel