使用 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: MainPresenter    override 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 里边,这样方便管理,就像工具类那样
    使用 kotlin 开发 android 遇到的问题_第1张图片

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 WindowManager        return 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?,        @SerializedName("total_income") var totalIncome: String?, //150        @SerializedName("total_pay") var totalPay: String?, //42        @SerializedName("bill_when_empty") var billWhenEmpty: String? )

更多相关文章

  1. Android环境变量的设置(详细图解版)
  2. 如何在Windows上设置Android环境变量/路径
  3. Android入门篇四:使用全局变量在Activity之间传递数据
  4. Mac OS X系统下的Android环境变量配置
  5. Android NDK编程中Application.mk和Android.mk写法
  6. Android的按钮监听事件&自定义回调函数
  7. android JNI层线程回调Java函数
  8. 硬件访问服务4之Android硬件访问服务框架及系统函数全详细实现
  9. Android Studio 调试过程中快捷查看断点处变量值(Ctrl+Shift+I无

随机推荐

  1. 且谈Android内存溢出
  2. 里程碑2给Android市场造成哪些影响
  3. Android 架构简介
  4. android 根据设置的日期获取星期几
  5. Android 程式开发:(一)详解活动 —— 1.1 Ac
  6. 借一个项目谈Android应用软件架构,你还在
  7. React-Native在android原生上的绘制流程
  8. Android进程分类与管理
  9. Android 深入了解 Handler 和 Looper
  10. Android无障碍总结