每当我试图在AndroidStudio3.0上重构Koltin代码时,它只需删除我所有的“顶级”导入,并开始使用"inplace“导入。
对于重构,我的意思是,在这种情况下,移动代码。假设我在com.myapp包下有一个类。如果我把它移到com.myapp.anotherpackage,这个问题就会发生
关于这一点的有趣的事实似乎只有在同时移动多个文件时才会发生
它看起来是什么样子:
//Before refactoring I have this import
import android.support.v7.app.AppCompatActivity;
class MyActivity : AppCompatActivity() {
//code
}
然后在重构之后,它会像这样
//"top level" import is gone
class MyActivity : android.support.v7.app.AppCompatActivity() { //"inline" import
//code
}
如果我不得不再次重构代码,情况会变得更糟,因为每个导入都是“内联”的,android不会重构这些代码,我必须手工修复它们。这已经很烦人了,因为我必须修复100多个这些。对如何解决这个问题有什么想法吗?
发布于 2017-05-23 12:19:03
这与不久前修复的bug非常相似。与As3.0预览捆绑在一起的Kotlin插件还没有包含相关的更改。但它们将在下一次插件更新中获得。
发布于 2017-06-01 12:18:40
入党有点晚了,不过,无论如何。Kotlin是一种相对较新的语言(仅在一个月前,它已经成为安卓系统的官方语言),因此JetBrains的开发正处于全速发展之中。而且,Android版本(3.0)并不是一个稳定的版本,下面是所有已知的Android问题。检查这些问题,这里。
上面写得很清楚:
一些Kotlin不可用的重构 并不是所有的代码重构都适用于Kotlin,尤其是用于Android的代码重构。例如,代码重构以模块化Kotlin cude目前并不适用于Kotlin。
Java友好的Android不熟悉Kotlin的内联功能。由于这是Kotlin中的一个新包含,它使代码更具可读性(真的吗?)但不是那么程序员友好,本身。
话虽如此,现在几乎没有任何源(检查过几个,其他的都是受欢迎的)来确认您的问题是问题,或者是Kotlin对Java的改进(同样也是很有争议的),因为inline
-ing本来是一个改进的功能。
现在,是时候用正式的标记来处理这个特性了。
发布于 2017-05-30 17:14:22
看起来它可能是一个bug --我设法在IntelliJ中重新创建了这个问题,并创建了这个bug报告:https://youtrack.jetbrains.com/issue/KT-18205。
https://stackoverflow.com/questions/44133672
复制相似问题