添加依赖
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.2.0'
ViewModel 的一个重要作用就是帮助Activity分担一部分工作,只要是界面上能看到的数据,它的相关变量都应该存放在ViewModel中。
public class myViewModel extends ViewModel {
protected int a=0;
public myViewModel(int a){
this.a=a;
}
}
{
myViewModel viewModel;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewModel= new ViewModelProvider(this,new VmFactory(55)).get(myViewModel.class);//若需要传参数使用这个同
//时实现ViewModelProvider.Factory
// viewModel= new ViewModelProvider(this).get(myViewModel.class);//不需传参,使用无参构造函数
//不能直接创建ViewModel的实例,不然每次活动oncreate()都会创建一个实例,无法保留其中数据
Button btn=(Button)findViewById(R.id.btn);
textView=(TextView)findViewById(R.id.text);
btn.setOnClickListener(MainActivity.this);
}
public void onClick(View view){
switch (view.getId()){
case R.id.btn:
viewModel.a++;
textView.setText(viewModel.a+"");
}
}
}
public class VmFactory implements ViewModelProvider.Factory {
private int a;
public VmFactory(int a){
this.a=a;
}
@NonNull
@Override
public T create(@NonNull Class modelClass) {
return (T)new myViewModel(a) ;
}
}