遇到Kotlin使用中的问题,及解决办法
2017-09-07 18:52
197 查看
1.使用Activity的this对象。
在Activity中经常要用到Context,在Java中这很容易,假如当前Activity是MainActivity。那么在这个Activity的任何地方,都可以使用MainActivity.this获得Activity的对象。
但是在使用Kotlin时,网上能够查到的代码都是这样获取Activity对象的
在一般情况下这样写是没问题的,但是今天我遇到的情况MainActivity@this这种方式失效了,通过使用Java转Kotlin工具,发现在我的使用场景下要使用
这种方式才能正确获取到Activity的对象,暂时还没有查到这两种写法的具体区别是什么,但是从效果上来看,更通用,不会出错的写法是第二种。
2.使用foreach的时候,默认it代表当前遍历到底元素。但是当foreach嵌套使用的时候,就会出现一个很尴尬的情况,里层和外层的foreach都能够使用it,而且他们代表的含义还不同,并且这个it我还没发现什么手段能改名字。。。。所以解决方法,会有嵌套使用的情况不要使用foreach。。。
3.在kotlin中,使用匿名类是可以写成Lamda表达式形式的,一般情况下这样做是没问题的,但是如果想要在回调方法中使用这个匿名类的指针,那么不要用Lamda表达式形式来写,要用object: 类名的形式来写,即便这个类只有一个方法。因为用Lamda表达式后,无法用this引用到这个匿名类对象。
4.在用Java开发时,内部类可以很轻易的调用父类的属性,但是在Kotlin里,如果内部类想调用父类的属性,那么这个类必须被显示的修饰成inner class,否则内部类是无法调用父类属性的
在Activity中经常要用到Context,在Java中这很容易,假如当前Activity是MainActivity。那么在这个Activity的任何地方,都可以使用MainActivity.this获得Activity的对象。
但是在使用Kotlin时,网上能够查到的代码都是这样获取Activity对象的
MainActivity@this
在一般情况下这样写是没问题的,但是今天我遇到的情况MainActivity@this这种方式失效了,通过使用Java转Kotlin工具,发现在我的使用场景下要使用
this@MainActivity
这种方式才能正确获取到Activity的对象,暂时还没有查到这两种写法的具体区别是什么,但是从效果上来看,更通用,不会出错的写法是第二种。
2.使用foreach的时候,默认it代表当前遍历到底元素。但是当foreach嵌套使用的时候,就会出现一个很尴尬的情况,里层和外层的foreach都能够使用it,而且他们代表的含义还不同,并且这个it我还没发现什么手段能改名字。。。。所以解决方法,会有嵌套使用的情况不要使用foreach。。。
3.在kotlin中,使用匿名类是可以写成Lamda表达式形式的,一般情况下这样做是没问题的,但是如果想要在回调方法中使用这个匿名类的指针,那么不要用Lamda表达式形式来写,要用object: 类名的形式来写,即便这个类只有一个方法。因为用Lamda表达式后,无法用this引用到这个匿名类对象。
4.在用Java开发时,内部类可以很轻易的调用父类的属性,但是在Kotlin里,如果内部类想调用父类的属性,那么这个类必须被显示的修饰成inner class,否则内部类是无法调用父类属性的
相关文章推荐
- updater application block v2.0的使用过程中遇到的问题及解决办法
- SQL Server WAITFOR Delay 使用变量遇到的问题和解决办法
- 使用Ubuntu遇到的问题及解决办法
- SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法
- 使用Linq 更新数据库时遇到的一些问题及解决办法
- 使用busybox-1.9.2制作CRAMFS问题系统过程中遇到的问题及解决的办法
- ASP.NET 4.0中使用FreeTextBox遇到安全问题警告的解决办法
- FileZilla 使用过程中可能遇到问题 及 解决办法
- SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法
- 转载+整理:在部署时使用Excel .NET运行库导出Excel遇到问题及解决办法
- ASP.NET 4.0中使用FreeTextBox和FCKeditor遇到安全问题警告的解决办法
- Ubuntu7.04使用中遇到的问题及从网上搜集的解决办法(截止2007-11-3日)
- Extjs gridpanel使用遇到selectionchange被多次触发问题解决办法,grid表格复选框无法取消选中
- 使用Orientation Changed Notification遇到的问题及解决办法
- ASP.NET 4.0中使用FreeTextBox和FCKeditor遇到安全问题警告的解决办法
- 自己在使用Android Maps API 开发地图应用程序时遇到的问题,以及解决的办法
- 使用php动态生成gif时遇到的问题和解决办法
- 使用最新的cvs及cvsweb,遇到的问题解决办法。
- ASIHTTPRequest使用过程中遇到的问题及解决办法
- 使用Linq 更新数据库时遇到的一些问题及解决办法