Ошибка IntelliJ Live Templates с функцией completeSmart ()

#android #templates #intellij-idea #android-studio #live-templates

#Android #шаблоны #intellij-idea #android-studio #live-шаблоны

Вопрос:

Я пытаюсь создать живой шаблон в Android Studio, который несколько ускорит создание findViewById(...)

Частично это самообучение, а частично любопытно создавать такие живые шаблоны.

Я хочу иметь возможность вводить следующее…

Button find (введите)

… и это должно создать что-то вроде этого…

Button btnAdd = (Button) findViewById(R.id.btnAddition);


В моей текущей реализации есть проблемы…

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

… и эти проблемы связаны с использованием completeSmart() . Всякий раз, когда вы используете completeSmart() , шаблон игнорирует все после этого вызова и завершает редактирование.

Например, если бы я переместил CAST именованную переменную на один слот выше ID ), то приведение было бы автоматически заполнено, и это больше не позволило бы мне легко редактировать ID . То же, что и на картинке ниже, но без btnAddition . Просто ...findViewById(R.id.);

При моей текущей настройке я располагаюсь CAST в самом низу, поэтому я могу легко редактировать все именованные переменные; однако использование completeSmart() не позволяет шаблону завершиться (поместите курсор на $END$ маркер — строку 29 на рисунке ниже), когда я закончу.

Вместо этого курсор помещается сразу после приведения, вот так… введите описание изображения здесь

…когда она должна быть помещена в начало следующей строки. Этот шаблон вставляет новую строку, но курсор не перемещается туда в конце. Почему?


Итак, я хочу это…

1) Поскольку я уже, но в Button , я хочу, чтобы приведение было Button . Мне не нужно было вводить дважды!

Ответ №1:

вы должны использовать метод typeOfVariable()

вы можете изменить следующим образом:

foo