Android Studio 3.0 Предварительный просмотр Отсутствует Импорт при рефакторинге кода Котлина

Всякий раз, когда я пытаюсь реорганизовать код Koltin на Android Studio 3.0, он просто удаляет все мои «верхние уровни» импорта и начинает использовать импорт «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 } 

введите описание изображения здесь

Это становится еще хуже, если мне придется повторно преобразовать код, так как каждый отдельный импорт является «встроенным», а андроид-студия не реорганизует их, и мне приходится вручную их исправлять. Это уже очень раздражает, поскольку мне пришлось исправить более 100 из них. Любые мысли о том, как это исправить?

Это очень похоже на ошибку, которая была исправлена ​​не так давно. Соответствующие изменения не были включены в плагин Kotlin в комплекте с предварительным просмотром As3.0. Но они будут доступны в следующем обновлении плагина.

Похоже, что это может быть ошибка. Мне удалось воссоздать проблему в IntelliJ и создать этот отчет об ошибке: https://youtrack.jetbrains.com/issue/KT-18205

Тад поздно присоединился к вечеринке, но, во всяком случае. Kotlin – относительно новый язык (с точки зрения его официального для Android, чуть ли не месяц назад), поэтому разработка идет полным ходом на JetBrains. И версия Android Studio (3.0) не является стабильной версией, поэтому вот все известные проблемы Kotlin с Android Studio. Проверьте эти проблемы здесь .

Там четко сказано:

Некоторые рефакторинги недоступны с Kotlin

Не все рефакторинги кода работают с Kotlin, особенно для Android. Например, ретрансляция кода для модуляции Kotlin cude в настоящее время не работает с Kotlin.

Java-совместимая Android-студия не знакома с встроенными функциями Kotlin. Поскольку это новое включение в Kotlin, оно делает код более читаемым (правда?), Но не настолько простым для программиста , как таковым.

Сказав , что, прямо сейчас вряд ли есть источник (проверил несколько, другие приветствуются) подтверждение того, что ваша проблема является проблемой или улучшение Котлин над Java (опять – таки весьма спорное) , так как inline -ing должна была быть улучшена функциональность ,

Теперь пришло время, чтобы эта функция была адресована официальным тегом.

Кажется, этот «рефакторинг» происходит после перемещения файла и обновления пакета.

В качестве обходного пути до исправления ошибки IDE / Plugin вы можете сделать следующее:

После перемещения файла (рефакторинг) щелкните файл правой кнопкой мыши,

  1. Выберите «Местная история» → «Показать историю»
  2. Выберите предыдущую ревизию, в которой он удалил весь импорт.
  3. Выберите возврат

Удостоверьтесь, что вы дважды проверяете результат, вы знаете, что у вас должна быть правильно переделанная / реорганизованная версия.


Иногда это не работает, но вы можете попытаться отменить (Move) и переместить его снова.

Протестировано на AS 3.0 Canary 3

Intereting Posts