You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法创建LoginViewModel实例问题求助(继承AndroidViewModel)

无法创建LoginViewModel实例的解决方案

核心问题

从报错日志的关键栈信息可以定位问题:

java.lang.IllegalAccessException: java.lang.Class<JavaCode.Screen.Login.LoginViewModel> is not accessible from java.lang.Class<androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory>

LoginViewModel类未设置public访问权限,导致ViewModelProvider通过反射创建实例时无法访问该类。

修复方法

给LoginViewModel添加public修饰符,确保外部类可访问:

public class LoginViewModel extends AndroidViewModel {
    public LoginViewModel(@NonNull Application application) {
        super(application);
    }

    // 补充登录方法实现
    public void login(String username, String password) {
        // 编写你的登录逻辑
    }
}

补充说明

  • 你在Fragment中使用new ViewModelProvider(requireActivity()).get(LoginViewModel.class)获取ViewModel的方式是正确的,适配单Activity多Fragment架构,无需切换旧实现。
  • ViewModel的构造方法必须是public的,ViewModelProvider依赖反射调用构造方法完成实例创建。

内容的提问来源于stack exchange,提问作者dxlampro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:15:48