Автоматическое создание тега журнала Android в Android Studio / Intellij idea

В Intellij Idea, когда я набирал psfs и затем нажимал Ctrl + J, IDE получал диалоговое окно:

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

И когда я нажимаю Enter, я получаю

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

Я знаю, где я могу настроить свой вывод

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

Но я не могу доказать, как я могу написать свой собственный живой шаблон.

В итоге я хочу получить следующий результат:

Ввод: psfst - ›нажмите Ctrl + J -› нажмите Enter

Результат :

public static final String TAG = <currentClassName>.class.getSimpleName();

Это будет очень полезно, потому что у меня есть привычка регистрировать свои занятия.


person Sergey Shustikov    schedule 31.03.2015    source источник


Ответы (6)


Я нахожу решение

1) Создайте новый действующий шаблон в простой группе
2) В тексте шаблона:

private static final String TAG = $CLASS_NAME$.class.getSimpleName();

3) Определите сферу использования:

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

4) Выберите ярлык:

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

наконец, нажмите Изменить переменные и измените значение выражения на className ()

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

Щелкните Ok, Apply, Ok и используйте.

person Sergey Shustikov    schedule 31.03.2015
comment
Отличный совет. В качестве предложения вы можете использовать частный вместо общедоступного, поскольку вы устанавливаете тег для каждого класса. - person androidevil; 17.08.2015
comment
Я изменил шаблон по умолчанию logt на шаблон, предложенный в этом решении. Это действительно то, чего я хотел, и то, как Это должно быть реализовано. Спасибо! - person David Miguel; 05.11.2016
comment
@SergeyShustikov А что насчет Котлина? - person Dr.jacky; 23.08.2018
comment
Это должно быть включено в Android Studio - person Mark O'Sullivan; 01.11.2018

Такой ярлык уже существует в Android Studio - напишите logt и введите, пока курсор находится в области класса.

подробнее здесь:

подробнее см. здесь

person Ofek Ron    schedule 29.05.2016
comment
Не совсем. Будет сгенерирован шаблон, поскольку private static final String TAG = "<class_name>"; не запрошен. Но я буду плюс, потому что, однако, это хорошие 0,02 $ к этому. - person Sergey Shustikov; 31.05.2016

Для тех, кто использует Android Studio 3 и Kotlin, необходимо изменить настройку Live Templates:

Редактор >> Живые шаблоны >> AndroidLog

По умолчанию это только для Java

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

Добавьте Kotlin, нажав кнопку «изменить» и отметьте Kotlin.

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

и после этого снова заработает!

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


Обновлено: 2020 г.

Android Studio: 3.6.2.

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

Шаги:

  1. Добавлять
  2. Call logtk - это все, что вы хотите позвонить
  3. Используйте этот код как текст шаблона
private val TAG = this::class.java.simpleName
  1. добавить описание
  2. Сделайте это применимо к Kotlin: в моем случае я использовал только для класса

Обновление, июнь 2020 г.

Больше не нужно ничего настраивать. Android Studio 4.0 по умолчанию поддерживает эту функцию. То же и с тостом

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

person Jorge Casariego    schedule 28.08.2018

В студии Android это очень просто, просто введите logt и нажмите Tab.

Он генерирует: private static final String TAG = "xyzActivity";

person CapTen101    schedule 12.01.2021

Другое решение - не использовать тег по умолчанию для каждого класса, а использовать этот метод для получения тега:

public class Utils {
        public static String getTAG(Object o) {
            StackTraceElement[] elements = Thread.currentThread().getStackTrace();

            int position = 0;
            for (int i = 0; i < elements.length; i++) {
                if (elements[i].getFileName().contains(o.getClass().getSimpleName())
                        && !elements[i+1].getFileName().contains(o.getClass().getSimpleName())){
                    position = i;
                    break;
                }
            }

            StackTraceElement element = elements[position];
            String className = element.getFileName().replace(".java", "");
            return "[" + className + "](" + element.getMethodName() + ":" + element.getLineNumber() + ")";
        }
}

Пример вызова из MainActivity - onResume:

Log.v(Utils.getTAG(this), "hello world");

Вывод журнала:

[MainActivity](onResume:79): hello world
person elabi3    schedule 17.03.2016
comment
На самом деле это не ответ об автоматическом создании тегов. - person Sergey Shustikov; 17.03.2016

Для Kotlin создайте живой шаблон с private val TAG = $CLASS_NAME$::class.java.simpleName в качестве текста шаблона и в выражении для CLASS_NAME как kotlinClassName () в переменных редактирования.

person Harith Sankalpa    schedule 25.08.2020