kotlin 的使用

1.跳转Activity

常规方式

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

使用anko

导入依赖:

implementation "org.jetbrains.anko:anko-common:0.10.8"
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);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kotlin使用Room数据库是一种常见的做法,Room是Google官方提供的一个SQLite对象映射库,用于简化与SQLite数据库的交互。以下是使用Room数据库的几个步骤: 1. 添加依赖:在项目的`build.gradle`文件中添加以下依赖: ```kotlin implementation "androidx.room:room-runtime:2.4.0" kapt "androidx.room:room-compiler:2.4.0" ``` 2. 创建实体类:创建一个Kotlin类来表示数据库中的表,并使用`@Entity`注解标记它。例如,如果我们要创建一个名为`User`的表,可以这样写: ```kotlin @Entity(tableName = "users") data class User( @PrimaryKey val id: Int, val name: String, val age: Int ) ``` 3. 创建DAO接口:创建一个Kotlin接口来定义访问数据库的操作,并使用`@Dao`注解标记它。例如,如果我们要创建一个名为`UserDao`的接口,可以这样写: ```kotlin @Dao interface UserDao { @Query("SELECT * FROM users") fun getAll(): List<User> @Insert fun insertAll(vararg users: User) @Delete fun delete(user: User) } ``` 4. 创建数据库:创建一个继承自`RoomDatabase`的抽象类,并在其中定义数据库的实例和DAO接口的访问方法。例如,如果我们要创建一个名为`AppDatabase`的数据库类,可以这样写: ```kotlin @Database(entities = [User::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao } ``` 5. 初始化数据库:在应用程序的入口处(通常是`Application`类的`onCreate()`方法),使用`Room.databaseBuilder`方法来创建数据库的实例。例如: ```kotlin val db = Room.databaseBuilder( applicationContext, AppDatabase::class.java, "database-name" ).build() ``` 6. 使用数据库:通过调用DAO接口中定义的方法,可以进行数据库的增删改查操作。例如: ```kotlin val userDao = db.userDao() val allUsers = userDao.getAll() userDao.insertAll(User(1, "John Doe", 25)) val user = userDao.getAll().first() userDao.delete(user) ``` 这些是使用Kotlin和Room数据库的基本步骤,希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaowang_lj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值