web-dev-qa-db-fra.com

Génération automatique Android Log TAG in Android Idée Studio / Intellij)

Dans Intellij Idea lorsque je tape psfs puis appuyez sur Ctrl+J IDE recevait une boîte de dialogue:

enter image description here

Et quand j'appuie Enter j'ai un

enter image description here

Je sais où je peux personnaliser ma propre sortie

enter image description here

Mais je ne sais pas comment je peux écrire mon propre modèle en direct.

En fin de compte, je veux obtenir le prochain résultat:

Taper: psfst -> appuyez sur Ctrl+J -> presse Enter

Résultat :

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

Ce sera très utile, car j'ai l'habitude de consigner mes cours.

37
Sergey Shustikov

Je trouve une solution

1) Créer un nouveau modèle en direct dans un groupe simple
2) Dans le texte du modèle:

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

) Définissez une portée d'utilisation:

enter image description here

4) Choisissez un raccourci:

enter image description here

enfin cliquer sur Edit variables et changez la valeur de l'expression en className ()

enter image description here

Cliquez sur Ok , ApplyOk et utilise.

43
Sergey Shustikov

Il existe déjà un tel raccourci dans Android Studio - écrivez logt et entrez lorsque le curseur est à la portée de la classe.

plus ici :

for more see here

31
Ofek Ron

Pour ceux qui utilisent Android Studio 3 et Kotlin , il est nécessaire de changer la façon dont Modèles en direct set:

Éditeur >> Modèles en direct >> AndroidLog

Par défaut, c'est juste pour Java

enter image description here

Ajoutez Kotlin en appuyant sur le bouton "changer" et cochez Kotlin

enter image description here

et après ça ça marchera encore!

enter image description here

4
Jorge Casariego

Une autre solution n'est pas d'utiliser un TAG par défaut pour chaque classe et d'utiliser cette méthode pour obtenir le 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() + ")";
        }
}

Exemple d'appel de MainActivity - onResume:

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

Sortie du journal:

[MainActivity](onResume:79): hello world
1
elabi3