45

在 Intellij Idea 中,当我键入psfs然后按Ctrl+JIDE 时,我得到了一个对话框:

在此处输入图像描述

当我按下时,Enter我得到一个

在此处输入图像描述

我知道在哪里可以自定义我自己的输出

在此处输入图像描述

但我无法了解如何编写自己的实时模板。

最后我想得到下一个结果:

打字:psfst->按Ctrl+J->按Enter

结果 :

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

这会很有帮助,因为我有记录我的课程的习惯。

4

6 回答 6

51

我找到了解决方案

1)在普通组中创建一个新的实时模板
2)在模板文本中:

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

3)定义使用范围:

在此处输入图像描述

4)选择一个快捷方式:

在此处输入图像描述

最后单击Edit variables并将表达式值更改为 className()

在此处输入图像描述

单击OkApplyOk使用。

于 2015-03-31T21:19:12.093 回答
41

Android Studio 中已经存在这样的快捷方式 - 在光标位于类范围时写入 logt 并输入。

更多在这里:

更多请看这里

于 2016-05-29T19:04:31.150 回答
11

对于使用Android Studio 3Kotlin的用户,有必要更改Live Templates的设置方式:

编辑器 >> 实时模板 >> AndroidLog

默认情况下它仅适用于 Java

在此处输入图像描述

添加 Kotlin 按“更改”按钮并检查 Kotlin

在此处输入图像描述

之后它会再次工作!

在此处输入图像描述


更新时间: 2020

安卓工作室: 3.6.2

在此处输入图像描述

脚步:

  1. 添加
  2. 调用 logtk 是您想要调用的任何内容
  3. 将此代码用作模板文本
private val TAG = this::class.java.simpleName
  1. 添加描述
  2. 是否适用于 Kotlin:在我的情况下,我仅用于 Class

2020 年 6 月更新

没有必要再设置任何东西了。Android Studio 4.0 默认带有这个功能。吐司也一样

在此处输入图像描述

于 2018-08-28T20:15:54.027 回答
11

在 Android Studio 中非常简单,只需键入logt并按Tab

它生成:private static final String TAG = "xyzActivity";

于 2021-01-12T12:19:08.550 回答
1

另一种解决方案是不为每个类使用默认 TAG 并使用此方法获取 TAG:

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
于 2016-03-17T15:05:09.327 回答
0

对于 Kotlin,创建一个实时模板, private val TAG = $CLASS_NAME$::class.java.simpleName其中模板文本和 CLASS_NAME 的集合表达式为编辑变量中的 kotlinClassName()。

于 2020-08-25T18:13:20.700 回答