kotlin 的使用

简介: kotlin 的使用

1.跳转Activity

常规方式

var intent =  Intent(this@MainActivity,MainActivity::class.java)
        intent.putExtra("name","wang")
        intent.putExtra("age",20)
        startActivity(intent)

使用anko

导入依赖:

startActivity<MainActivity>(
            "name" to "wang",
            "age" to 20,
            Pair("major","computer")
        )

2.类型序列化

使用 data class ,再加上@Parcelize注解

@Parcelize
data class User(var name:String) {
 
}

在build.gradle里添加

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions' 新添加
}
android {
    compileSdk 31
 
    defaultConfig {
        applicationId "com.example.kotlindemo"
        minSdk 29
        targetSdk 31
        versionCode 1
        versionName "1.0"
 
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
 
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    androidExtensions { 新添加
        experimental = true
    }
}

3.在输入完成后,自动隐藏输入法

//定义一个编辑框监听器,在输入文本达到指定长度时自动隐藏输入法
    private class HideTextWatcher implements TextWatcher {
        private EditText mView;
        private int mMaxLength;
        private CharSequence mStr;
 
        public HideTextWatcher(EditText v) {
            super();
            mView = v;
            //通过反射机制获取编辑框的最大长度
            mMaxLength = ViewUtil.getMaxLength(v);
        }
 
        //在编辑框的输入文本变化前触发
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
 
        }
 
        //在编辑框的输入文本变化时触发
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            mStr = s;
        }
 
        //在编辑框输入文本变化后触发
        @Override
        public void afterTextChanged(Editable s) {
            if (mStr == null || mStr.length() ==0) {
                return;
            }
            //输入文本达到11位(如手机号码)时关闭输入法
            if (mStr.length() == 11 && mMaxLength == 11) {
                ViewUtil.hideAllInputMethod(EditHideActivity.this);
            }
            //输入文本达到6位(如登录密码)时关闭输入法
            if (mStr.length() == 6 && mMaxLength ==6) {
                ViewUtil.hideOneInputMethod(EditHideActivity.this, mView);
            }
        }
    }

 

 public static void hideAllInputMethod(Activity act) {
        //从系统服务中获取输入法管理器
        InputMethodManager imm = (InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm.isActive()) {   //软键盘如果已经打开则关闭之
            imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }
 
    public static void hideOneInputMethod(Activity act, View v) {
        //从系统服务中获取输入法管理器
        InputMethodManager imm = (InputMethodManager)act.getSystemService(Context.INPUT_METHOD_SERVICE);
        //关闭屏幕上的输入法软键盘
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }


目录
相关文章
|
12月前
|
弹性计算 Ubuntu Java
OS-Copilot-ubuntu镜像版本的具体测试使用(安装方式有单独注明)
作为一名个人开发者,我主要负责云资源的运维和管理。在使用OS Copilot的过程中,我遇到了一些配置问题,特别是在ECS实例中设置AccessKey时,但最终成功解决了。通过使用OS Copilot的-t/-f/管道功能,我大大提升了效率,减少了命令编写的工作量,特别是在搭建Java运行环境时效果显著。此外,| 功能帮助我快速理解文档,整体体验非常流畅,推荐给其他开发者使用。
287 6
|
Ubuntu Linux
Linux实践|设置静态 IP 地址
Linux实践|设置静态 IP 地址
Linux实践|设置静态 IP 地址
|
机器学习/深度学习 数据挖掘 PyTorch
🎓PyTorch深度学习入门课:编程小白也能玩转的高级数据分析术
踏入深度学习领域,即使是编程新手也能借助PyTorch这一强大工具,轻松解锁高级数据分析。PyTorch以简洁的API、动态计算图及灵活性著称,成为众多学者与工程师的首选。本文将带你从零开始,通过环境搭建、构建基础神经网络到进阶数据分析应用,逐步掌握PyTorch的核心技能。从安装配置到编写简单张量运算,再到实现神经网络模型,最后应用于图像分类等复杂任务,每个环节都配有示例代码,助你快速上手。实践出真知,不断尝试和调试将使你更深入地理解这些概念,开启深度学习之旅。
265 1
|
JavaScript 数据安全/隐私保护 Python
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
1482 4
|
编解码 Ubuntu 前端开发
我的NVIDIA开发者之旅——作为一名初学者,我是如何开启 NVIDIA Jetson Nano 开发的
在本文中,我将展示如何从一个初学者角度,使用 NVIDIA Jetson Nano 。 你也可以参考官方教程。 如果你想跟着我一起做,那么接下来的内容比会比较花费时间,需要你耐心跟着往下做。😎
1559 103
我的NVIDIA开发者之旅——作为一名初学者,我是如何开启 NVIDIA Jetson Nano 开发的
|
设计模式 编译器 Linux
从C语言到C++_37(特殊类设计和C++类型转换)单例模式(中)
从C语言到C++_37(特殊类设计和C++类型转换)单例模式
162 0
|
存储 算法 程序员
数据结构之动态内存管理机制(上)
数据结构之动态内存管理机制
|
网络协议 Android开发 虚拟化
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
234 0
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
|
SQL 关系型数据库 MySQL
【MySQL异常】MySQL事务锁问题----lock wait timeout exceeded; try restarting transaction
【MySQL异常】MySQL事务锁问题----lock wait timeout exceeded; try restarting transaction
1294 0
【C/PTA】函数专项练习(三)
【C/PTA】函数专项练习(三)
467 0

热门文章

最新文章