簡體   English   中英

重構Kotlin代碼時,Android Studio 3.0預覽缺少導入

[英]Android Studio 3.0 Preview Missing Imports when refactoring Kotlin code

每當我嘗試在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工作室不會重構那些,我必須手動修復它們。 這已經變得非常煩人,因為我不得不修復其中的100多個。 有關如何解決此問題的任何想法?

這與不久前修復的bug非常相似。 相關更改未包含在與As3.0預覽版捆綁在一起的Kotlin插件中。 但它們將在下一個插件更新中提供。

但是,無論如何都遲到了加入派對。 Kotlin是一種相對較新的語言(就Android而言,幾乎在一個月之前),因此JetBrains的開發速度正在迅速提升。 並且,Android Studio版本(3.0)不是一個穩定的版本,所以這里是Kotlin與Android Studio的所有已知問題。 在這里檢查這些問題。

它清楚地說:

某些重構不適用於Kotlin

並非所有代碼重構都適用於Kotlin,特別是適用於Android的代碼重構。 例如,用於模塊化Kotlin cude的代碼重構目前不適用於Kotlin。

Java友好的Android Studio不熟悉Kotlin的內聯功能。 既然,這是Kotlin的一個新的包含,它使代碼更具可讀性(真的嗎?)但本身並不那么程序員友好

話雖如此,現在幾乎沒有任何來源(檢查一些,其他人都歡迎)確認你的問題是一個問題或Kotlin比Java的改進(再次高度爭議),因為inline意味着一個改進的功能。

現在,這是使用官方標簽解決此功能的時候了。

看起來它可能是一個錯誤 - 我設法在IntelliJ中重新創建該問題並創建了此錯誤報告: https//youtrack.jetbrains.com/issue/KT-18205

在移動文件並更新軟件包之后,似乎會發生這種“重構”。

作為解決方法,直到IDE / Plugin錯誤得到修復,您可以執行以下操作:

移動文件(重構)后右鍵單擊該文件,

  1. 選擇本地歷史→顯示歷史記錄
  2. 選擇刪除所有導入的先前修訂版
  3. 選擇還原

確保仔細檢查結果,你知道應該有正確移動/重構的版本。


偶爾這似乎不起作用,但您可以嘗試撤消(移動)並再次移動它。

在AS 3.0 Canary 3上測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM