在项目中逐步加入Kotlin代码 -> 基本点击事件与跳转
2018-03-05 15:19
281 查看
在项目中逐步加入Kotlin代码
-> 初衷:学习Kotlin有一段时间了,想逐步运用到项目中去
在项目逐步加入的时候,发现了很多以前自己没有注意到的细节导致开发受阻
多练习,加深印象
将自己Kotlin的历程记录下来给同样遇到问题的同学参考
最重要的一个问题是,在自己遇到坑的时候,查看别人的博客,基本都是复制粘贴抄袭别人的博客,最恶心的是,抄袭的博客没有写具体,很多流程都没有写完就草草了事,我实在不理解这样的博客价值何在
-> 基于此,我决定一边替换自己项目中的语言,并将细节,代码块写好,一边抽时间发布在博客中,给同样搜不到不一样的博客的同学做参考。
一.在Java开发的Android项目中集成Kotlin
1.安装插件
打开AS或IDEASetting
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方法中执行没有任何影响。
相关文章推荐
- Android中Kotlin的学习(点击事件、跳转、for循环、RecyclerView、回调)
- 写在<?php XXXXXXX ?>之间的点击按钮跳转的代码
- 对多个Linerlayout设置点击事件,并实现Activity的跳转。(用Switch简化多次设置点击事件的重复代码)
- Kotlin初体验(二)--点击事件与界面跳转
- SourceTree的基本使用 1. SourceTree是什么 拥有可视化界面的项目版本控制软件,适用于git项目管理 window、mac可用 2. 获取项目代码 1. 点击克隆/新建 2
- jQuery触发<a>标签的点击事件后URL不跳转的解决办法
- Kotlin 实现按钮点击跳转监听事件
- 不使用a标签,实现点击跳转到其他页面的代码
- iOS开发有用代码(有判断邮箱格式是否正确的代码、图片压缩、亲测可用的图片上传代码和实现点击图片进行跳转的代码等。)
- vue单页应用项目加入百度统计代码
- 点击事件所触发的页面跳转
- 【Html】想加入一行代码吗?使用<code>标签
- 用Kotlin实现Android点击事件的方法
- listview item加入CheckBox点击事件无效
- 在android中用代码触发一个按钮的点击事件的代码是: buttonName.performClick();
- a标签加入单击事件 屏蔽href跳转页面
- 代码创建UIWindow -> UIView -> RootViewController中遇到UIview覆盖,控件事件不响应问题
- 猫猫学iOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件
- 在input输入框中回车激活点击按钮事件代码
- 深入A标签点击触发事件而不跳转的详解