• Android Studio 之 ViewModel (转)


    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'

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    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));
                }
            });
        }
    }
  • 相关阅读:
    Mac Studio 的内部存储可更换但不可升级
    Mac电脑的激活日期如何查询?
    隐藏在sketch的10个实用技巧,学会就是赚到!
    Macbook如何查看是M1芯片还是inter芯片?
    如何使用Photoshop2022中的背景图层?
    如何在 Illustrator 中转换图稿?
    .NET 代码整洁手册
    django修改model内容生效
    svn add 子目录文件目录无法递归
    debian9使用rsync拉取代码
  • 原文地址:https://www.cnblogs.com/Sendige/p/12207558.html
Copyright © 2020-2023  润新知