使用 kotlin 开发 android 遇到的问题
16lz
2021-01-23
使用 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? )
更多相关文章
- Android环境变量的设置(详细图解版)
- 如何在Windows上设置Android环境变量/路径
- Android入门篇四:使用全局变量在Activity之间传递数据
- Mac OS X系统下的Android环境变量配置
- Android NDK编程中Application.mk和Android.mk写法
- Android的按钮监听事件&自定义回调函数
- android JNI层线程回调Java函数
- 硬件访问服务4之Android硬件访问服务框架及系统函数全详细实现
- Android Studio 调试过程中快捷查看断点处变量值(Ctrl+Shift+I无