ViewModel 是 JetPack 类库中的一个功能,可以保存控件的状态 ,在整个Activity 生命周期中,状态不会失效

如屏幕翻转时,状态可保留,不会失效!

与 LiveData 配合使用!

配合 Room 进行 Sqlite 操作数据库

新建 ViewModel 类,在MainActivity类的父结点上右击,点创建java类

注意:Superclass 中要选 ViewModel

1. ViewModel 类中放一个public 的整数变量

2. 在MainActivity类中创建一个 MyViewModel 实例,

注意:ViewModelProviders 这个对象,需要在 build.gradle中的 dependencies 结点中, 添加引用  implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'

package com.example.viewmodel1;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProviders; public class MainActivity extends AppCompatActivity { MyViewModole myViewModole;
TextView textView;
Button button1;
Button button2; String TAG = "myTag"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); button1 = findViewById(R.id.button);
button2 = findViewById(R.id.button2);
textView = findViewById(R.id.textView); myViewModole = ViewModelProviders.of(this).get(MyViewModole.class); //实例化
textView.setText(String.valueOf(myViewModole.numberAnInt));//初始时,给它赋值 button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myViewModole.numberAnInt++;
textView.setText(String.valueOf(myViewModole.numberAnInt));
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myViewModole.numberAnInt += 2;
textView.setText(String.valueOf(myViewModole.numberAnInt));
}
});
}
}

  

最新文章

  1. 2 column数据构成主键的表转化为1 column为主键的表
  2. JS总结 运算符 条件语句
  3. 【Android开发】 第一课 环境搭建教程
  4. Windows 2012 R2中安装SharePoint 2013 sp1参考
  5. Netsharp快速入门(之11) 销售管理(开发销售订单工作区)
  6. 【hadoop】有参考价值的博客整理
  7. 页面异步加载javascript文件
  8. Drbd 安装配置
  9. jquery学习 (3)文本框获取焦点之后变换样式
  10. (二)CodeMirror - 配置项
  11. C#中结构与类的区别
  12. GNOME界面简单使用
  13. php 后端跨域请求
  14. java解析xml字符串方法
  15. 安装_oracle11G_客户端_服务端_链接_oracle
  16. Day21--Python--C3算法和super()
  17. 关于this指向性的问题
  18. Postman 测试swagger类接口技巧
  19. 解决failed to get the required adt version from sdk version
  20. [Spark]-Spark发展历程与基本概念

热门文章

  1. 用python完成排序算法
  2. 原生aJax跨域
  3. [转]C++类成员修饰const和mutable
  4. React 性能优化之组件动态加载(react-loadable)
  5. MySQL用户及权限
  6. pandas 之 数据合并
  7. Redis学习总结整理
  8. profile name is not valid,The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
  9. Linux Kbuild文档(转)
  10. Android研发技术的进阶之路