Kotlin教程 各种View的声明赋值点击事件详解

2023-05-16

本章节讲述Kotlin中各种View的声明赋值点击事件,比如TextView,EditText,ImageView。这些在Java语言中是最最基础的东西。写这篇文章的主要目的就是看一下Kotlin语言中有什么不同。

1.代码

class KotlinActivity2 : AppCompatActivity() {

    //View的声明
    private lateinit var textView: TextView
    private lateinit var editText: EditText
    private lateinit var imageView: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_kotlin2)
        initView()
    }

    /**
     * 初始化View
     * */

    @SuppressLint("SetTextI18n")
    private fun initView() {
        //View的初始化
        textView = findViewById(R.id.textView)
        editText = findViewById(R.id.editText)
        imageView = findViewById(R.id.imageView)

        //View的赋值
        textView.text = "我是Kotlin的TextView"
        editText.setText("我是Kotlin的EditText")
        imageView.setBackgroundResource(R.drawable.ic_launcher_background)

        //View的点击事件
        textView.setOnClickListener {
            val intent = Intent(this, MainActivity2::class.java)
            intent.putExtra("name", "张三")
            startActivity(intent)
        }
        imageView.setOnClickListener{

        }
    }
}

2.结果

2.1.初始

2.2.展示

最简单的View声明,View初始化,View赋值。没什么可讲的。下面我们对照Java语言来说一下几个区别。

一.类继承

Java

public class MainActivity extends AppCompatActivity

class关键字声明一个类 如果想继承AppCompatActivity类 使用extends关键字即可。

Kotlin

class KotlinActivity2 : AppCompatActivity() 

class关键字声明一个类 如果想继承AppCompatActivity类 使用   : +类名+()。这个就是Kotlin和Java的区别。

注意

我们创建一个类时。

Java语言中默认创建的类带有public,如上。也就是默认创建的Java类是public类型的。也就是可以被其他类继承。

Kotlin语言中默认创建的类没有任何修饰符,如上。也就是说默认创建的Kotlin类是final类的不可以被其他类继承。那么如果想把创建的Kotlin类可以被其他类继承呢?

我们可以使用open关键字。举例如下

如果KotlinActivity2类如下

class KotlinActivity2 : AppCompatActivity() 

另外一个类GaoJieFun 想要继承KotlinActivity2类 

class GaoJieFun :KotlinActivity2()

报错提示

即提示 KotlinActivity2类是final类型的,要想继承这个类需要把这个类改成open类型的。

修改

open class KotlinActivity2 : AppCompatActivity()

类GaoJieFun 继承KotlinActivity2类

class GaoJieFun :KotlinActivity2()

成功。

二.View声明

如上,Kotlin中声明View时都加了一个关键字lateinit。那么这个关键字可不可以不加,以及这个关键字的作用是什么呢?

1.不加lateinit关键字声明View 代码

private  var textView: TextView

private lateinit var editText: EditText

private lateinit var imageView: ImageView

报错信息

 也就是说,View的声明必须加lateinit关键字

2.lateinit关键字的作用

lateinit关键字的作用是  推迟变量的初始化

因为

在Kotlin中,必须在声明对象时初始化对象的属性。这意味着,当您获取类的实例时,可以立即引用它的任何可访问属性。

但是

由于Android中各种View的声明比较特殊,因为在Activity中只有在onCreate方法中调用findViewById后,各种View才可以初始化。

所以

在Kotlin中,需要一种方法来推迟 View 的属性初始化。即使用lateinit关键字。

3.lateinit关键字的其他说明

<1> lateinit关键字 不能用来修饰基本数据类型。因为基本数据类型在声明时会有默认值,比如int类型默认0。

代码

private lateinit var m:Int = 0

报错

<2> lateinit不能修饰val变量,只能修饰可变的属性。

代码

private lateinit var string: String

正确

代码

private lateinit val string: String

报错

<3> 总结

lateinit关键字 在Kotlin中 主要用来延时初始化View。其他的基本变量或者val常量不可以使用。其他可以使用的变量,在使用时也需要格外谨慎。个人建议只在View的声明时使用

三.View点击事件

View的点击事件,也是非常简单的操作。我们还是看一下Java和Kotlin的区别。

Java

textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        
    }
});

Kotlin

textView.setOnClickListener {
   
}

Java的语法咱们就不说了,咱们看一下Kotlin的。可见Kotlin的点击事件语法很简单。就是

view.setOnClickListener{}。然后在大括号内写具体的逻辑即可。

四.类引用

如上,简单的Intent页面跳转时

Java

Intent intent = new Intent(this, MainActivity2.class);

intent.putExtra("name", "张三")

startActivity(intent);

Kotlin

val intent = Intent(this, MainActivity2::class.java)

intent.putExtra("name", "张三")

startActivity(intent)

也就是,引入类时,Java直接使用  类名.class  即可。而Kotlin需要 类名::class.java

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin教程 各种View的声明赋值点击事件详解 的相关文章

随机推荐

  • linux服务器内网磁盘映射、文件夹共享存储

    1 当前局域网两台服务器 xff1a 服务器1 xff1a 192 168 1 2 服务器2 xff1a 192 168 1 3 如果是虚拟机或者云主机需要在安全组增加允许tcp 任何端口 访问 192 168 1 0 24 想把服务器2
  • 想获得50亿专项激励?关于穿山甲新星助推计划你必须了解的几件事

    最近经常有开发者向我讲述他们在产品变现时候面临的一些痛点 xff1a 我是开发者 xff0c 想做流量变现 xff0c 不知道如何接广告 随便找到了一个平台没想到点击率和单价这么低 接入某某广告平台的流程异常复杂 xff0c 审核资料要求极
  • greenplum--gpfdist

    文章目录 命令格式实例 gpfdist是Greenplum中并行文件分发程序 使用它创建可读外部表时 xff0c 来自gp的数据段都是并行的 命令格式 gpfdist span class token punctuation span d
  • 一张图告诉你可刷armbian的电视盒子晶晨系列

  • VSCode将某个字符替换为换行符,并换行显示

  • WSL1 和 WSL2 从C盘 导入到 D盘

    win10 wsl 从C盘移除 WSL 1导出导入使用 windows Terminal 打开 powershell 标签wsl help 查看支持的子选项命令将wsl 系统打包注销已经导出的wsl导入修改windows terminal
  • 修改mysql字符集为utf8mb4

    设置mysql字符集为utf8mb4 要求MySQL版本 gt 61 5 5 3 查看字符集 查看MYSQL数据库服务器和数据库字符集 方法一 xff1a show variables like 39 character 39 方法二 xf
  • spyder中安装第三方库的包

    最近遇到一个问题 xff1a 在CMD命令窗口安装的python包 xff0c 在anaconda中spyder编辑器中找不到已安装的python包 xff0c 经过网上的资料查看 xff0c 原来是因为 xff0c cmd中python包
  • ubuntu16.04解决wifi被禁用的问题

    点击启用wifi xff0c 可wifi显示被禁用的问题解决 xff1a 1 终端输入命令 xff0c 查看当前wifi开关状态 xff0c 联想电脑会有出现ideapad laptop 影响无线wifi开关的 xff1a rfkill l
  • win10中WSL与Intel Haxm系列模拟器产生冲突

    windows 中的 wsl 基于微软自家的 Hyper V ms WHPX 系虚拟化加速 有些第三方的安卓模拟器 xff0c 基于 Intel 家的 Haxm Intel Haxm 系虚拟化加速 但是 xff0c 一个运行中的系统 xff
  • Windows10安装ubuntu(WSL2,可直接调用Win10程序) —2022年笔记

    算是wsl2的使用总结 一 启动win10虚拟机模块 1 打开控制面板 xff08 或开始 gt 运行 control xff09 2 点击最左边的 启用或关闭windows功能 xff0c 会弹出模块勾选界面 3 勾上 Hyper V 适
  • MySQL分组后取每一组第N条数据

    1 知识点 group concat 函数 聚合函数 1 功能 xff1a 将group by产生的同一个分组中的值连接起来 xff0c 返回一个字符串结果 2 语法 xff1a group concat distinct 要连接的字段 o
  • TDengine的安装使用(超详细)

    TDengine的安装使用 目录 FastBee物联网使用TDengine作为时序数据库 xff0c 蜂信物联官网 xff0c 开源项目演示 xff1a FastBee文档 xff1a 立即开始 TDengine 文档taos的配置参数客户
  • 双系统安装教程(win10 & ubuntu20.04)

    双系统安装教程 xff08 win10 amp ubuntu20 04 xff09 背景创建启动盘win10下磁盘划分开始安装吧我的分区设置启动项 背景 最近公司项目开发需要linux系统 xff08 yocto构建 xff09 xff0c
  • python3.x 快速入门

    Edit the gt 2018 6 15 11 26 53 1认识Python 人生苦短 我用python 优雅 明确 简单 是python设计哲学 python的设计目标之一 是让代码具备高度的可阅读性 python 被广泛用于web程
  • python字符串和列表的切片

    python字符串和列表的切片 前言1 切片字符串例子2 切片语法说明3 列表切片例子演练总结 前言 对于字符串和列表python提供了以 start end step 直观方式来截取字符串和列表一部分 xff0c 使用起来非常便利和直观
  • Debian安装

    欢迎访问爱招飞网站https www isoface cn获取更多物联网产品技术信息 Debian 是一个自由的操作系统 xff08 OS xff09 xff0c 提供您安装在计算机上使用 操作系统就是能让您的计算机工作的一系列基本程序和实
  • Java读取jar包中的resource资源文件

    目录 1 需求 2 问题 3 IDEA读取resource资源 3 1 方法1 3 2 方法2 4 打成jar包后读取resource资源 4 1 读取jar包中的资源文件 4 2 遍历jar包资源目录 4 2 1 环境判断 4 2 2 复
  • 【Excel】排名之成绩并列排名(sumproduct、countif 函数的组合使用方法)

    目录 一 应用场景 解决成绩并列排名 二 sumproduct countif 函数的官方语法说明 三 组合使用的解释 一 应用场景 解决成绩并列排名 在 Excel 的排名中 xff0c 不免会遇到 并列第一 xff0c 并列第X 的情况
  • Kotlin教程 各种View的声明赋值点击事件详解

    本章节讲述Kotlin中各种View的声明赋值点击事件 xff0c 比如TextView xff0c EditText xff0c ImageView 这些在Java语言中是最最基础的东西 写这篇文章的主要目的就是看一下Kotlin语言中有