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);
        }
相关推荐
程序员阿鹏16 分钟前
MySQL中给字段添加唯一约束的方式有哪些?
android·数据库·mysql
三少爷的鞋2 小时前
Android Data 层设计的四条红线:为什么必须坚持、如何落地
android
猫豆~2 小时前
zabbix实战——3day
android
知行合一。。。3 小时前
Python--01--核心基础
android·java·python
汤米粥3 小时前
Android简单易用的视频压缩
android
怀君4 小时前
Uniapp——Android离线打包自定义基座教程
android·uni-app
ellis19704 小时前
Unity出安卓包知识点汇总
android·unity
urkay-4 小时前
Android 全局悬浮窗
android·gitee
朝花不迟暮5 小时前
Go基础-闭包
android·开发语言·golang
风清云淡_A5 小时前
【Android36】android开发实战案列之RecyclerView组件的使用方法
android