如果不进行处理的话,布局上的临时数据可能会因为屏幕反转,切换系统语言等而消失,但是处理过程略微繁琐,较为麻烦,但是谷歌为我们提供了一种更加简洁的方式来管理界面数据,那就是 ViewModel。
构建自己的 ViewModel
类
新建 Java 类,继承至ViewModel
,名字自定义,这里以MyViewModel
为例。
package com.aimerneige.viewmoudeltest;
import androidx.lifecycle.ViewModel;
public class MyViewMoude extends ViewModel {
}
新建好类之后,直接将需要用到的数据填写在内部,可以直接使用 public 的数据类型(不推荐),或者使用 private 数据加 get 方法。
package com.aimerneige.viewmoudletest;
import androidx.lifecycle.ViewModel;
public class MyViewMoude extends ViewModel {
public int number = 0;
public String test = "Test for 100";
private int age = 0;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
然后把ViewModel
当成一个智能地存储数据的结构体使用即可。
在 Activity 中使用 ViewModel
在MainActivity
内构建MyViewMoude
的引用
MyViewMoude myViewMoude;
在 onCreate 方法内获得 MyViewMoude 的实体
myViewMoude = ViewModelProviders.of(this).get(MyViewMoude.class);
直接使用即可,操作类似结构体
textView.setText(String.valueOf(myViewMoude.number));
textView.setText(myViewMoude.test);
textView.setText(String.valueOf(myViewMoude.getAge()));
额外的说明
ViewModelProviders.of()目前已被官方弃用官方文档
以下是解决方案, 参考资料
将
boardViewModel = ViewModelProviders.of(this).get(BoardViewModel::class.java)
替换为:
boardViewModel = ViewModelProvider(this).get(BoardViewModel::class.java)
本例中,使用如下代码:
myViewMoude = new ViewModelProvider(this).get(MyViewMoude.class);