使用 kotlin 开发 android 遇到的问题

本篇主要总结一些在 java 中写的代码在 kotlin 中的写法,不定期更新。。


2018.4.4 更新

用 kotlin 的方式自定义回调事件(kotlin函数参数)
https://blog.csdn.net/Captive_Rainbow_/article/details/79818279


2018.3.21 更新

Kotlin之自定义 Live Templates(模板代码)
http://blog.csdn.net/Captive_Rainbow_/article/details/79642244


2017.12.6 更新

kotlin 1.2 版本新增了一个针对 lateinit 标记的变量的判断,判断变量是否已经完成初始化 ::mMainPresenter.isInitialized

    @Inject lateinit var mMainPresenter: MainPresenteroverride fun onDestroy() {/*(1.2版本已发布,已解决)权限更改后销毁activity时,这里会报错变量没有初始化等 kotlin 1.2 版本再解决 https://blog.jetbrains.com/kotlin/2017/09/kotlin-1-2-beta-is-out/*/if (::mMainPresenter.isInitialized) {mMainPresenter.detachView()}super.onDestroy()}

kotlin 拓展函数

  • 关于 kotlin 拓展函数,全部可以写到一个 kotlin file 里边,这样方便管理,就像工具类那样

2017.12.5 更新

匿名内部类

  • 比如实现自定义的点击事件

    java 中:

kotlin 中:

拿到 class 对象

java 中:

Intent intent = new Intent(context, MainActivity.class);
context.startActivity(intent);adapter.register(TalkOpenAnswerModel.class, talkOpenAnswerViewProvider);

kotlin 中:

val intent = Intent(context, MainActivity::class.java)context.startActivity(intent)adapter.register(LogOutBinderModel::class.java, logOutViewBinder)

工具类的写法

java 中:

public class DeviceUtils {/*** 获取屏幕的高度 单位/px*/public static int getScreenHeight(Activity activity) {return getDisplayMetrics(activity).heightPixels;}
}

kotlin 中:

object DeviceUtil {/*** 得到屏幕的高** @param context* @return*/fun getScreenHeight(context: Context): Int {val wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManagerreturn wm.defaultDisplay.height}
}

单例模式

java 中:

public class ImageLoader {public static ImageLoader getInstance() {return SingletonLoader.INSTANCE;}private static class SingletonLoader {private static final ImageLoader INSTANCE = new ImageLoader();}
}

kotlin 中:

class ImageLoader {companion object {val INSTANCE = ImageLoader()}
}

网络请求实体类

  • java 中实体类只能一个一个的类文件创建
  • kotlin 中可以创建一个 kotlin 文件,然后创建多个 data class 作为实体类

java 中:

public class Uuid {private String uuid;public Uuid(String uuid) {this.uuid = uuid;}public String getUuid() {return uuid;}public void setUuid(String uuid) {this.uuid = uuid;}
}

kotlin 中:

/*** Created by wendong on 2017/11/15 0015.* Email:       wdeo3601@163.com* Description:*/
data class BillReqModel(@SerializedName("time_stamp") var timeStamp: String)data class BillRespModel(@SerializedName("list") var list: List<BillBinderModel?>?,@SerializedName("total_income") var totalIncome: String?, //150@SerializedName("total_pay") var totalPay: String?, //42@SerializedName("bill_when_empty") var billWhenEmpty: String?
)

使用 kotlin 开发 android 遇到的问题相关推荐

  1. 用Kotlin开发android平台语音识别语义理解应用

    用Kotlin开发android平台语音识别,语义理解应用(olamisdk) 转载请注明CSDN博文地址:http://blog.csdn.net/ls0609/article/details/75 ...

  2. 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)

    本文使用Kotlin开发Android平台的一个语音识别方面的应用,用的是欧拉密开放平台olamisdk. 1.Kotlin简介 Kotlin是由JetBrains创建的基于JVM的编程语言,Inte ...

  3. 使用Kotlin开发Android应用 - 环境搭建 (1)

    一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...

  4. 使用Kotlin开发Android应用初体验

    使用Kotlin开发Android应用初体验 昨晚,最近一届的谷歌IO大会正式将Kotlin确定为了官方开发语言,作为一名Android开发鸟,怎么能不及时尝尝鲜呢? Kotlin的简要介绍 在开发之 ...

  5. kotlin开发Android入门篇八Kotlin开发Android的基本使用

    基础篇:Kotlin开发Android的基本使用 使用AndroidStudio3.0及以上开发Kotlin在新建项目中勾选这个选项则会默认开发语言为Koltin,然后再gradle(Project的 ...

  6. 用 Kotlin 开发 Android 项目是一种什么样的感受?(二)

    前言 前面我已经写了一篇名为<用 Kotlin 开发 Android 项目是一种什么样的感受?>的文章.文中多数提到的还是 Kotlin 语言本身的特点,而 Kotlin 对于 Andro ...

  7. 使用Kotlin开发Android应用

    作者:snowdream Email:yanghui1986527#gmail.com QQ 群: 529327615 原文地址:https://snowdream.github.io/blog/20 ...

  8. Kotlin开发Android

    Kotlin开发Android<第一行代码> Kotlin简单语法 变量 1. 关键字var和val 2.不必显式声明变量类型 3. 变量的类型 函数 函数的定义 语法糖 流程控制 条件控 ...

  9. [Android]使用Kotlin开发Android(二)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4829007.html [TOC] 使用Kotlin+OkHtt ...

  10. IDEA基于kotlin开发android程序配置小结

    IDEA功能极其强大,和微软的宇宙第一IDE不相上下.用了很长时间,对它配置的完善性产生了近乎迷信的感情.似乎只要走正常渠道,用它来配置,没有不成功的. IDEA是开发android原生程序的利器,a ...

最新文章

  1. android按钮最底,Android:点击按钮后布局上的动画,最低SDK版本为14
  2. 出口印度海运注意事项
  3. Samba平台搭建和用户自行修改密码环境搭建笔记
  4. 腾讯面试Android必问11题,我说的,不信就来看看
  5. 用fputc()函数以字符串形式写入字符到磁盘文件
  6. python 散点图 不同颜色_python – pandas – 每个点都有不同颜色图例的散点图
  7. 如何安装Linux操作系统
  8. 安卓学习笔记29:使用SQLite数据库
  9. 38个MySQL数据库的小技巧
  10. CocoaPods 报错 [!] Error installing JSONModel
  11. linux 下 sudo 指令不需要输入密码的配置
  12. phpQuery占用过多内存的解决方法
  13. 利用PS 调整 pdf清晰度
  14. java 实现 PDF 转 TIF 【彩色压缩版】
  15. 系统架构设计师考试心得与经验
  16. 小米造车follow苹果路线?智能驾驶能力是个关键问题
  17. HTML——<blockquote>与<q>的区别
  18. IJCAI-18 阿里妈妈搜索广告算法大赛亚军解决方案
  19. springboot-01
  20. Angular JS introduce

热门文章

  1. 网络安全实验 缓冲区栈溢出实验 Ollydbg
  2. 专业测试工程师浅谈功能测试用例模板设计
  3. 京东推荐系统实践——打造千人千面的个性化推荐引擎
  4. java 104规约_电网104规约解包(java)
  5. 电力-101/104规约基础1
  6. 乌班图各版本镜像文件下载
  7. 基于大数据挖掘----浅谈大数据与大数据挖掘
  8. [ 原创 ] 概念01--中国财政真相:25省负债 全国只有6省1市在赚钱
  9. 网页源代码怎么屏蔽?
  10. steam授权_号商福利,Steam验号机器人上线,再也不用手动验号了