微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Jetpack Compose 导航时无法创建视图模型的实例

如何解决使用 Jetpack Compose 导航时无法创建视图模型的实例

我在我的应用程序中使用导航组件进行 jetpack 组合,如下所示:

@Composable
fun FoodiumNavigation() {
    val navController = rememberNavController()

    NavHost(
        navController = navController,startDestination = Screen.Main.route,) {
        composable(Screen.Main.route) {
            MainScreen(navController)
        }

        ...
    }
}

而且我在我的 viewmodel 可组合中得到 MainScreen,如下所示:

@Composable
fun MainScreen(navController: NavController) {
    val mainviewmodel: Mainviewmodel = viewmodel()
    ...
}

这给了我一个运行时异常 Cannot create an instance of class com.package.main.Mainviewmodel

在此,我声明这仅在使用导航组件时发生,即一切正常,并且 mainviewmodel 在我的应用中使用导航组件之前已成功实例化。

Mainviewmodel 是这样的:

@ExperimentalCoroutinesApi
@Hiltviewmodel
class Mainviewmodel @Inject constructor(private val postRepository: PostRepository) :
    viewmodel() {

    private val _postsLiveDataState = mutablelivedata<UiState<List<Post>>>()
    val postLiveState: LiveData<UiState<List<Post>>> = _postsLiveDataState

    init {
        getPostsstate()
    }

    private fun getPostsstate() {
        viewmodelScope.launch {
            postRepository.getAllPosts()
                .onStart { _postsLiveDataState.value = UiState(loading = true) }
                .map { resource -> UiState.fromresource(resource) }
                .collect { state -> _postsLiveDataState.value = state }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。