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);
        }
相关推荐
1024+15 小时前
YOLO 转 RKNN 识别率降低调优操作手册(新手篇)
android·yolo·kotlin
木易 士心16 小时前
深度解析 Android 音频焦点处理与实战开发
android·音视频
祉猷并茂,雯华若锦17 小时前
Appium 3.x安卓APP企业级安装实战
android·appium
微露清风17 小时前
浅析 MySQL 索引
android·数据库·mysql
91刘仁德18 小时前
MySQL 数据类型详解
android·笔记·mysql·adb
编程圈子19 小时前
操作系统学习14 IDT + PIC + 键盘中断
android·学习·计算机外设
齊家治國平天下1 天前
Android 14 Vehicle HAL (VHAL) 设计与实现深度解析
android·aaos·carservice·车载开发·android 14·vhal·vehicle hal
AFinalStone1 天前
Android 7系统网络(八)应用API层—ConnectivityManager使用与实战调试
android·网络
plainGeekDev1 天前
kapt 替换为 KSP
android·java·kotlin
蜡台1 天前
通过Gradle脚本声明更改Java变量
android·java·开发语言·python·kotlin·gradle·groovy