Android——ViewModel需要有参构造报错

bash 复制代码
Process: com.wyg.util, PID: 32767
java.lang.RuntimeException: Cannot create an instance of class com.wyg.xc.XCViewModel                                                                                            
at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.kt:204)

原因是自己ViewModel继承类的构造

java 复制代码
public XCViewModel(String name) {
	this.name=name
}

解决方法

新建Factory类实现ViewModelProvider.Factory

java 复制代码
public class XCViewModelFactory implements ViewModelProvider.Factory {
    private String name;

    public XCViewModelFactory(String name) {
        this.name = name;
    }

    @NonNull
    @Override
    public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
        if (modelClass.isAssignableFrom(XCViewModel.class)) {
            return (T) new XCViewModel(name);
        }
        throw new IllegalArgumentException("Unknown ViewModel class");
    }
}

最后在Fragment继承类或Activity中使用

java 复制代码
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    	String name="张三";
        XCViewModelFactory factory = new XCViewModelFactory(name);
        xcViewModel = new ViewModelProvider(this, factory).get(XCViewModel.class);
        }
相关推荐
雾里看山5 分钟前
【MySQL】内置函数
android·数据库·mysql
风浅月明15 分钟前
[Android]页面间传递model列表
android
法迪17 分钟前
Android自带的省电模式主要做什么呢?
android·功耗
风浅月明18 分钟前
[Android]AppCompatEditText限制最多只能输入两位小数
android
没有晚不了安30 分钟前
1.11作业
android
zhangphil33 分钟前
Android Coil3缩略图、默认占位图placeholder、error加载错误显示,Kotlin(1)
android·kotlin
貂蝉空大1 小时前
uni-app开发安卓和ios app 真机调试
android·ios·uni-app
少年芒2 小时前
Leetcode 490 迷宫
android·算法·leetcode
IT猿手3 小时前
2025最新智能优化算法:鲸鱼迁徙算法(Whale Migration Algorithm,WMA)求解23个经典函数测试集,MATLAB
android·数据库·人工智能·算法·机器学习·matlab·无人机
兰琛4 小时前
12.1 Android中协程的基本使用
android