ViewModel是保存activitiy中的数据 当系统屏幕反转或者按下home时activity会被销毁重新创建,这时候我们的数据会被重新初始化,所以我们要用ViewModel来保存当前的状态(当然按下返回键和结束进程不会保存)
在gradle(app)中添加依赖
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01'
然后新建一个MyView Model类 继承ViewModel
public class MyViewModle extends ViewModel {
private SavedStateHandle handle;
public MyViewModle(SavedStateHandle handle) {//构造方法
if (!handle.contains("NUMBER")){//如果handle没有包含NUMBER我们就新建一个赋值0
handle.set("NUMBER",0);
}
this.handle = handle;
}
public LiveData<Integer>getNumber(){//过去数据值
return handle.getLiveData("NUMBER");
}
public void add(){//加1运算
handle.set("NUMBER",(int)handle.get("NUMBER") + 1);
}
}
然后再mainlayout中添加数据绑定
TextView设置TEXT属性为
Button设计点击事件为
这是说明一下 使用数据绑定后 @{} 大括号内可以使用Java语法 ()->是方法的调用
然后再MainActivity写如代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);//从数据绑定工具类中绑定
MyViewModle viewModle = ViewModelProviders.of(this,new SavedStateViewModelFactory(getApplication(),this)).get(MyViewModle.class);//从工厂类中获取
binding.setData(viewModle);
binding.setLifecycleOwner(this);
}
}
然后既可以运行项目看看