在项目中逐步加入Kotlin代码 -> 基本点击事件与跳转

在项目中逐步加入Kotlin代码

-> 初衷:

  • 学习Kotlin有一段时间了,想逐步运用到项目中去
  • 在项目逐步加入的时候,发现了很多以前自己没有注意到的细节导致开发受阻
  • 多练习,加深印象
  • 将自己Kotlin的历程记录下来给同样遇到问题的同学参考
  • 最重要的一个问题是,在自己遇到坑的时候,查看别人的博客,基本都是复制粘贴抄袭别人的博客,最恶心的是,抄袭的博客没有写具体,很多流程都没有写完就草草了事,我实在不理解这样的博客价值何在

-> 基于此,我决定一边替换自己项目中的语言,并将细节,代码块写好,一边抽时间发布在博客中,给同样搜不到不一样的博客的同学做参考。


一.在Java开发的Android项目中集成Kotlin

1.安装插件

  • 打开AS或IDEA
  • Setting
  • Plugins
  • 搜索Kotlin (如果升级至AS 3.01则自带Kotlin)
  • 安装好并重启

    如图

2.配置环境

  • 打开项目中随便一个路径,右键新建一个Kotlin的Class文件
    这里写图片描述
    这里写图片描述
    第一次创建Kotlin Activity,会提示 Kotlin not configured,点configure,在弹窗中,直接点击确定即可。AS自动会在Gradle中配置一些依赖

  • 配置完成

  • 接下来,我们看看gradle发生了哪些变化:
    打开module中的gradle,发现顶部多了一行代码:
buildscript {
    ext.kotlin_version = '1.2.30' // new line
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // new line
        }
    }

这里申明了kotlin的版本号,并提供在其他地方引用

  • 打开app中的gradle,顶部多了两行代码:apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions' 其中,第一个代表加入了kotlin支持android的插件,第二个是额外包,(其实此行代码是我自己手动加的,我们后面会讲到它的用法,真的好方便)

  • 在dependencies大括号中,多了一行代码:compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.30" 这行代码就是kotlin的架包

好,如果发现没有编译通过,就手动将这些配置拷贝到对应的gradle下。

如果不出意外,项目的kotlin环境已经配置完成。

基本点击事件与跳转:

  • 1.打开刚刚项目中新建的kotlin类,当前的类什么都没有,只申明了一个类:
package com.sby.seal.ui.aty.test
class Test2 {}
  • 2.继承Activity,并举例实现OnClickListener的代码:
    class Test2 : BaseActivity() , View.OnClickListener{}

    没错,extend被:所替代了,代码看上去更简洁,用一个逗号隔开实现的接口,省去了implements关键词,其中BaseActivity是我项目中所有Activity的基类,大家可直接当做Activity来看,需要注意的是,这里的Activity后面需要加()才行

  • 当前会报错,因为需要重写方法和实现接口,alt + Enter 查看需要重写和实现的接口

  • 重写Activity的Oncreate方法,并新建activity_test布局:
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_test)
    }

不出意外,程序就可以运行起来了。

  • 修改布局,添加一个Button:
<Button
            android:id="@+id/bt_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="button"  />
  • 在kotlin类中,加入点击事件:
override fun onClick(v: View?) {
        when (v?.id)
        {
            R.id.ll_push  -> startActivity(Intent(this,Activity0::class.java ))
            R.id.ll_del -> startActivity(Intent(this,Activity1::class.java ))
            R.id.ll_go_to_market -> openAsClient(mActivity, Constant.SPLASH_IMG_ACTION)
            else -> xxx
        }
    }

有的小伙伴惊讶了,为什么不用findViewById就可以直接找到控件
好吧,让我轻轻地告诉你,打开module的gradle,顶部是不是有一句apply plugin: 'kotlin-android-extensions'

没错,这是kotlin支持android开发的附加包的申明,这里提供了很多封装好的方法
再切换到kotlin的类,查看顶部导入的包,应该有一行这样的导入代码:

import kotlinx.android.synthetic.main.activity_test .*

看到了吧,控件不是凭空而来的,解放双手,抛弃findViewById直接使用控件吧
至此,点击事件就完成了.在我的测试中,布局中onClick的内容可以为任意字符串,在类中onClick方法中执行没有任何影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值