Kotlin 介绍

Kotlin是JetBrains开发的基于JVM的语言。JetBrains是一家捷克的软件开发公司,该公司位于捷克的布拉格,研发了IntelliJ IDEA这款相对于Eclipse有较大改善的大名鼎鼎IDE产品,使用Java开发的童鞋想必也是非常了解了

使用 Kotlin 有什么好处?

1.更简洁

相比Java显得更加简洁,代码量减少了很多,比如when,with,apply等语法。

2.更安全

Kotlin是空安全的,它在编译期间就会处理各种为null的情况,很明显,可以很大程度上减少NullPointException的出现,让程序更加的安全。

3.易扩展

扩展函数并不是我们不仅可以扩展我们原有写好的类,还可以扩展系统级的类,非常灵活,另外如果在类里编写扩展函数,那么只对当前类生效。而且,函数里面还可以写函数等。

4.跟findViewById()说拜拜

这个一看到大家就很清楚,就是我们不用在去写findViewById(),去除了反复等操作,如果你使用了ButterKnife,那么很好,你也可以跟它说再见了,当然这里面,会存在一个很坑爹的问题,接下来会仔细说说的

5.不用写分号

这点有点蛋疼,因为你习惯了Java,要写分号,然后你会习惯性添加,就会非常难受

如何使用Kotlin?

接下来,我会说一下怎么接入kotlin,然后慢慢的你就可以准备入手开发了

配置kotlin步骤:

1.在项目外层的build.gradle中配置如下:

buildscript {    ext.kotlin_version = '1.2.30'}

2.同样在项目外层中配置:

dependencies {    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"}

3.在内部app的build.gradle中配置

apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'apply plugin: 'kotlin-kapt'

这样就完成了所有的配置了
那么
接下来
就可以进行正式的开发了

怎么快速开发?

没办法,这个是必须面对的,我就直接说,不吹牛逼了
滴!滴!滴!
老司机开车了

步骤

1.快速扫描文档,包括语法,重点,变量,类,方法,够了,花不了多少时间吧,下一个
2.不会直接写?没关系,新建一个Java文件,用Java编写好单独的某个逻辑操作,复制到一个.kt文件,然后就会生成kotlin代码了,当然这种还是有些会转失败了,还需要自己稍微修改一下,然后OK了
3.最重要的点就是,编写边百度,或者谷歌,这些会给你圆满答复的,不用永远停留在看,想,这一层次,行动永远是解决真理的唯一道理

以上呢

准备工作都已经做好了

Kotlin 踩坑经验集

1.当Fragment碰到Kotlin

哎,这个我刚开始测试的时候,都没有发现这个问题,真正实战了,才发现都,那就是,渲染ui或者给view添加各种事件都时候,

一定要在onViewCreated 中初始化

一般我们都是在onCreateView中就可以进行初始化了,然后开始做所有操作,包括
1。初始化数据
2。初始化点击时间
3。渲染ui
4。。。。
你会发现,然后game over 了

why?

因为kotlin自己做了findViewById的时候,用一个id,比如

text_xxx.setOnClickListener(this)text_xxx.text = "Hello Word"

的时候,是需要用view.find的,指向这个id,但是这个时候,如果在其它时候,fragment还没有返回view,所以,不好意思,就会出现NullPointException

小伙伴们可以自行尝试

当然如果这个是在Actvity里面是不存在的

2.当Dagger碰到Kotlin

当Dagger碰到Kotlin会发生什么呢,就是在传递参数当时候,你会发现,

@Autowired 使用这个的时候,你不管怎么样,都不行,报错,还是报错

解决办法:添加@JvmField

3.静态函数

你会发现,在kotlin中不存在静态函数这一说,你根本不能不new对象才行,那么咋搞,不会这么low吧,这么简单的东西,都不行?

解决办法:companion object 伴随 如下

companion object {        fun create(str: String): XXXFragment {            val fragment = XXXFragment()            return fragment        }}
4.当某个对象当属性
a.name?:""a.list?.size()?:0

也就是,?,问一下前面结果是不是null的

5.多使用apply,with语句
val ss = xxx().apply {    name = "张三"    number = 15}
var ss = xxx()with(ss){    name = "张三"    number = 15}

这种被称之为代码块,让你看起来,感觉就是一起的,形成鲜明的对比,就是在一起的

6.常量定义

比如,某些东西是固定的,但是有想方便统一管理
这个时候就需要这样搞

interface RouterConstant {    interface aa {        companion object {            const val PATH = "/aa/login"        }    }    interface bb {        companion object {            const val PATH = "/bb/login"        }    }}

当然也可以这样搞

interface RouterConstant {    object aa {       const val PATH = "/aa/login"    }    object bb {       const val PATH = "/bb/login"    } }
7.构造函数
constructorconstructor(str: String)constructor(str: String ,a : Int)constructor(str: String ,a : Int , money : Double)

当然如果有注解什么的,一定要写在这个构造函数之前,比如

@Inject constructor@Inject constructor(str: String)@Inject constructor(str: String ,a : Int)@Inject constructor(str: String ,a : Int , money : Double)

总结

有关于Kotlin在Android的使用暂时就到这里了,基本上已经够用了,开发不成问题了,在把以前的Java代码逻辑转Kotlin就很简单了,慢慢到就熟悉了,大家毕竟都是有经验,很快的,语言其实就是换一个种姿势而已,如果大家有相应的补充,可以留言评论,也好一一添加上去,弥补文章不足,为更多的人减少时间,实现快速开发

更多相关文章

  1. 第3.3.4节 创建高级图形之RenderScript(二)
  2. Android智能指针分析(sp、wp)
  3. Android中一个Activty控制另一个Activity的函数及变量
  4. Android学习探索之Java 8 在Android(安卓)开发中的应用
  5. Android(安卓)设备上实现串口的移植
  6. android中才Pull解析器生成xml文档
  7. Android之自定义控件
  8. u3d与android通信1
  9. Android五层框架驱动编写(完整篇)

随机推荐

  1. Using cygwin with the Android(安卓)NDK
  2. andorid webview
  3. Android(安卓)APK反编译详解(附图)
  4. Android拍照
  5. Android两种计步器sensor
  6. Android点击通知栏返回正在运行的Activit
  7. Android与(Servlet)服务器交互
  8. Android(安卓)实现Activity后台运行
  9. Android(安卓)同个TextView设置字体大小
  10. Android(安卓)HTTP GET/POST