簡體   English   中英

在 Android Studio/Intellij idea 中自動生成 Android Log TAG

[英]Auto-generate Android Log TAG in Android Studio/Intellij idea

在 Intellij Idea 中,當我輸入psfs然后按Ctrl+J 時, IDE 給我一個對話框:

在此處輸入圖片說明

當我按Enter 時,我得到一個

在此處輸入圖片說明

我知道在哪里可以自定義我自己的輸出

在此處輸入圖片說明

但我無法了解如何編寫自己的實時模板。

最后我想得到下一個結果:

輸入: psfst -> 按Ctrl+J -> 按Enter

結果 :

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

這會很有幫助,因為我有記錄課程的習慣。

我找到了解決辦法

1)在普通組中創建一個新的實時模板
2)在模板文本中:

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

3)定義使用范圍:

在此處輸入圖片說明

4)選擇快捷方式:

在此處輸入圖片說明

最后點擊編輯變量並將表達式值更改為 className()

在此處輸入圖片說明

單擊“確定” 、“應用” 、“確定”並使用。

Android Studio 中已經存在這樣的快捷方式 - 編寫 logt 並在光標位於類范圍內時輸入。

更多在這里:

更多信息請看這里

對於使用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 帶有此功能。 吐司也是一樣

在此處輸入圖片說明

在 Android Studio 中非常簡單,只需輸入logt並按Tab 即可

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

另一種解決方案是不對每個類使用默認 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

對於 Kotlin,創建一個實時模板,使用private val TAG = $CLASS_NAME$::class.java.simpleName作為模板文本,並在 CLASS_NAME 的 set 表達式中作為 kotlinClassName() 在編輯變量中。

暫無
暫無

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

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