2016-04-01 1 views
0

Ok, j'ai une classe fictivestudio Android mauvais pliage

public class TEMP { 
    String data; 
    View.OnClickListener onClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (data != null) { 

      } 
     } 
    }; 
} 

Et il ressemble à ceci dans Android Studio: enter image description here

Si je déplier tout - il semble laid:
enter image description here

Si je supprime ce bloc if à l'intérieur onClick() - il semble bon:
Pourquoi cela se produit-il et comment puis-je résoudre ce problème?

+0

J'ai vu le même problème et c'est ennuyeux pour moi aussi. Je pense que nous devrions soit déposer un bogue sur Android Studio/Intellij IDEA, soit trouver le bogue que probablement quelqu'un d'autre a déjà créé. – helleye

Répondre

1

Ça fait longtemps, je ne sais pas à quel point c'est utile.

Ceci plie la fonction dans une structure visuelle de type lambda avec la notation lambda Java 8. Les interfaces à une seule méthode sont (presque) équivalentes à lambdas dans Java 8. Android Studio ne prend actuellement PAS en charge la notation lambda Java 8 (détails trouvés au bas de cette réponse: Is it possible to use Java 8 for Android development?).

Une solution de contournement est disponible pour Java 8, basée sur la chaîne d'outils Jack. Voici le the workaround, et voici le deprecation de la chaîne d'outils Jack.

Une autre note est que selon here et here, Android Studio 2.4 aperçu 4 et versions ultérieures semble prendre en charge la notation lambda réelle. Notez qu'il s'agit d'aperçus, et la dernière version officielle est 2.3.2.

Quant à la façon de résoudre ce problème, je ne crois pas que ce soit possible. Vous pouvez peut-être utiliser le region feature pour dupliquer ce que vous essayez d'atteindre. Le lien ci-dessus est un genre de chose.

+0

Hm, j'ai déjà oublié ce problème;). On dirait que dans certaines versions plus tard les gars ont corrigé cela. Dans la version actuelle (2.3.2), je ne peux pas reproduire cela. –

+0

Je vois toujours le problème. J'ai des classes anonymes plutôt importantes dans mon projet qui se transforment en une expression lambda au lieu de se plier complètement. Je cours aussi 2.3.2. – AlterionX