使用 kotlin 开发 android 遇到的问题
来源:互联网 发布:红尘男女 网络歌手 编辑:程序博客网 时间:2024/05/21 05:24
使用 kotlin 开发 android 遇到的问题
本篇主要总结一些在 java 中写的代码在 kotlin 中的写法,不定期更新。。
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<BillBinderModel?>?, @SerializedName("total_income") var totalIncome: String?, //150 @SerializedName("total_pay") var totalPay: String?, //42 @SerializedName("bill_when_empty") var billWhenEmpty: String? )
阅读全文
0 0
- 使用Kotlin开发Android遇到的问题
- 使用 kotlin 开发 android 遇到的问题
- Android Kotlin遇到的问题
- Android急速开发--kotlin环境配置和遇到的问题
- 使用Android Studio开发遇到的问题
- android开发使用eclipse遇到的问题
- Android 使用Kotlin 和 DataBinding 遇到 not access class问题
- 使用Kotlin开发Android
- 使用Kotlin开发Android
- 使用kotlin开发android
- kotlin的一些学习和使用时遇到的问题
- 使用Kotlin优雅的开发Android应用
- 使用Kotlin优雅的开发Android应用
- Android Kotlin遇到的坑
- Android 开发使用Android studio 遇到的问题汇总
- 遇到Kotlin使用中的问题,及解决办法
- Kotlin 开发Android问题记录
- android开发 遇到的问题
- 【PHP】PHP里针对while循环里的异常退出的处理
- 数据库使用规范
- php file_get_contents("php://input")的用法
- Service
- 互斥锁属性
- 使用 kotlin 开发 android 遇到的问题
- oracle12c及PLSQL Developer安装全程记录
- 乌镇AI论坛最全盘点:中国互联网半壁江山坐在了一起,他们怎么看AI
- Informatica Update 机制详解
- centos redis安装配置整合php
- Nginx shiro redis 多tomcat共享session
- git使用——将本地项目上传到GitHub
- CAD快捷键
- 将Web应用性能提高十倍的10条建议