使用 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 里边,这样方便管理,就像工具类那样

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的线程使用来更新UI----Thread、Handler、Looper、TimerT
  2. SAP BSP, Java Web Project,Android和微信小程序的初始页面设置
  3. Ubuntu搭建Eclipse+JDK+SDK的Android
  4. Android开发学习笔记(十三) ProgressDialog学习
  5. Android环境变量的设置(详细图解版)
  6. android message机制
  7. Unable to instantiate activity ComponentInfo
  8. android NDK 开发
  9. 箭头函数的基础使用

随机推荐

  1. Visual Studio 2010 也能开发Android(安
  2. Android(安卓)Camera 找来找去还是觉得ap
  3. android http连接超时处理
  4. Android下文件操作模式(含SDCard的读写)
  5. Android(安卓)新手常见的10个误区(下)
  6. Android(安卓)Gradle之productFlavors(定
  7. Android(安卓)Notification使用
  8. Android(安卓)requires compiler complia
  9. Android开发环境搭建
  10. Lottie动画