Android Studio 之 ViewModel
2024-09-03 09:05:48
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));
}
});
}
}
最新文章
- 2 column数据构成主键的表转化为1 column为主键的表
- JS总结 运算符 条件语句
- 【Android开发】 第一课 环境搭建教程
- Windows 2012 R2中安装SharePoint 2013 sp1参考
- Netsharp快速入门(之11) 销售管理(开发销售订单工作区)
- 【hadoop】有参考价值的博客整理
- 页面异步加载javascript文件
- Drbd 安装配置
- jquery学习 (3)文本框获取焦点之后变换样式
- (二)CodeMirror - 配置项
- C#中结构与类的区别
- GNOME界面简单使用
- php 后端跨域请求
- java解析xml字符串方法
- 安装_oracle11G_客户端_服务端_链接_oracle
- Day21--Python--C3算法和super()
- 关于this指向性的问题
- Postman 测试swagger类接口技巧
- 解决failed to get the required adt version from sdk version
- [Spark]-Spark发展历程与基本概念
热门文章
- 用python完成排序算法
- 原生aJax跨域
- [转]C++类成员修饰const和mutable
- React 性能优化之组件动态加载(react-loadable)
- MySQL用户及权限
- pandas 之 数据合并
- Redis学习总结整理
- profile name is not valid,The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
- Linux Kbuild文档(转)
- Android研发技术的进阶之路