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

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继承类的构造

public XCViewModel(String name) {
	this.name=name
}

解决方法

新建Factory类实现ViewModelProvider.Factory


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中使用

    @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);
        }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android Studio ViewModel 是一种用于管理和保留与界面相关的数据的类。它是在 Android 架构组件库中引入的,旨在解决 Android 应用程序中常见的生命周期问题。 ViewModel 的主要目的是将数据与界面分离,以确保数据在配置更改(如屏幕旋转)或其他系统事件(如内存不足)导致的重新创建 Activity 或 Fragment 时不会丢失。ViewModel 对象会在配置更改后保留在内存中,因此可以在新的 Activity 或 Fragment 实例中重用。 ViewModel 的使用非常简单。您只需创建一个继承自 ViewModel 的子类,并将需要保留的数据作为成员变量添加到该类中。然后,您可以在 Activity 或 Fragment 中通过 ViewModelProvider 获取 ViewModel 的实例,并使用它来存储和检索数据。 以下是使用 Android Studio ViewModel 的一些关键点: 1. 创建 ViewModel 类:创建一个继承自 ViewModel 的子类,并将需要保留的数据作为成员变量添加到该类中。 2. 获取 ViewModel 实例:在 Activity 或 Fragment 中,使用 ViewModelProvider 获取 ViewModel 的实例。您可以通过传递 Activity 或 Fragment 实例以及 ViewModel 类的 Class 对象来获取 ViewModel 实例。 3. 存储和检索数据:使用 ViewModel 实例来存储和检索与界面相关的数据。您可以在需要时更新数据,并且无论发生什么配置更改,数据都会保持不变。 使用 Android Studio ViewModel 可以帮助您更好地管理和保留与界面相关的数据,提高应用程序的性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桂?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值