一个多月之前做了一下代码优化,因为android.app.Fragment过时了,项目中全部使用Support库中的Fragment。
添加Fragment的时候,用的是supportFragmentManager,但是查找Fragment的时候用的是fragmentManager。导致Fragment找不到,从而导致后续的奇葩逻辑问题。关键Kotlin代码如下:

大家发现什么问题了吗?
问题就是Kotlin用的是var来接收方法返回值,没有强制使用Fragment来声明一个变量。编译运行都是没问题的。
如果同样的代码用Java去写,那就必须为Fragment导包,如果这时候用fragmentManager就会导致类型不匹配编译不通过,及时发现问题。这就是强类型语言的优势,有时候还真不能偷懒!
网友评论