Android Studio 3.0 Preview重构Kotlin代码时缺少导入
每当我尝试在Android Studio 3.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 studio不会重构这些内容,我必须手动修复它们。 这已经变得非常烦人了,因为我必须修复其中的100多个。 任何想法如何解决这个问题?
这与前不久修复的bug非常相似。 尚未将相关更改纳入捆绑在As3.0预览版中的Kotlin插件中。 但是他们将在下一个插件更新中可用。
它看起来可能是一个错误 – 我设法在IntelliJ重新创建问题,并创建了这个错误报告: https : //youtrack.jetbrains.com/issue/KT-18205
Tad迟到了,但是无论如何。 Kotlin是一个相对较新的语言(几乎在一个月前,Android是官方的),所以JetBrains的开发工作正在全速进行。 而且,Android Studio版本(3.0)不是一个稳定版本,所以这里是Android Studio的Kotlin的所有已知问题。 在这里检查这些问题。
在那里它清楚地说:
Kotlin没有提供一些重构
并不是所有的代码重构都适用于Kotlin,尤其是那些适用于Android的代码。 例如,对Kotlin cude进行模块化的代码重构目前不适用于Kotlin。
Java友好的Android Studio不熟悉Kotlin的内联功能。 既然,这是Kotlin中的一个新的包含,它使得代码更具可读性(真的?),但本身并不是程序员友好的 。
话虽如此,但现在几乎没有任何资料来源(检查了一些,其他人也受到欢迎),确认您的问题是Java 问题还是Kotlin相对于Java的改进(同样值得商榷),因为Inline -ing意味着是一种改进的功能。
现在,这个功能是用官方标签发布的。
似乎这个“重构”发生在文件被移动和包更新之后。
作为解决方案,直到IDE /插件错误得到解决,您可以执行以下操作:
移动文件(重构)后,右键单击文件,
- 选择本地历史→显示历史
- 选择删除所有导入的先前版本
- 选择恢复
确保仔细检查结果,你知道应该有正确的移动/重构版本。
偶尔这似乎不起作用,但是你可以尝试撤销(移动)并再次移动。
在AS 3.0 Canary 3上测试
- 使用Buck构建系统构建用Kotlin编写的Android应用程序
- 詹金斯:Android项目未能建立(生成数据绑定/匕首类失败)
- KAnnotator在Android Studio中工作吗?
- 新 – 未解决的参考:kotlinx
- 不能从java模块调用kotlin模块
- 如果在构造函数中定义类属性,如何编写自定义getter?
- Android Studio 3.0数据绑定参考代码不由android studio生成
- BottomNavigationView链接到ViewPager,当我设置监听器bottomNavigationView,我必须点击两次执行我所做的
- Android Studio更新到0.6后,Kotlin问题