RecyclerView: les classes internes ne peuvent pas avoir statique de la déclaration
Je suis un peu confus, j'ai mis un recyclerview que par le tutoriel sur google/android site et j'obtiens l'erreur suivante
Inner classes cannot have static declaration
Bien sûr, j'ai un imbriquée statique de la classe, mais c'est la façon dont android/google défini.
public class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> {
...
...
public static class ViewHolder extends RecyclerView.ViewHolder {
...
}
Pourquoi je suis geting cette erreur, j'entends son mieux pour utiliser une classe imbriquée comme statique de sorte que vous ne perdons pas une référence mais la version actuelle d'android studio est de se plaindre
Des idées ?
Grâce
C'est probablement un bug. Cette question est similaire à la vôtre. stackoverflow.com/questions/10567906/...
OriginalL'auteur Martin | 2015-08-12
Vous devez vous connecter pour publier un commentaire.
Directement à vos questions:
C'est entièrement vrai. Ce n'est pas un bug, et le message d'erreur n'est même pas trompeuse.
Vous avez absolument raison.
Solution pour vous:
Créer une nouvelle classe(Fichier) dans votre projet pour
ItemsViewAdapter
et il n'y aura pas une telle erreur.Discussion Générale
Java et Android, les deux supports que vous pouvez déclarer
static
les classes internes/membres/fonctions, MAIS cette classe devrait être un parent de la classe. Vous ne pouvez pas le faire à l'intérieur d'un intérieur de classe.I. e.,
class Main
peut avoirstatic class Adapter
mais si leAdapter
classe est un intérieur de classe deMain
n'est pas statique, il ne peut pas avoir son propre statique à l'intérieur de la classe/membre.Ce Que Vous Pouvez Avoir?
Ou
Si vous voulez déclarer un membre de la classe comme
static
alors le parent immédiat de la classe doit être le top-niveau, classe principale dans ce fichier.Pourquoi?
Citant une autre réponse, C'est parce que l'intérieur de la classe est implicitement associé à une instance de l'extérieur de la classe, il ne peut pas définir toutes les méthodes statiques lui-même. Depuis une statique de la classe imbriquée ne peut pas se référer directement à des variables d'instance ou de méthodes définies dans sa classe englobante, elle peut les utiliser uniquement à travers un objet de référence, il est possible de déclarer des méthodes statiques dans une statique de la classe imbriquée.
Plus de Lecture sur le Sujet
1 http://www.geeksforgeeks.org/inner-class-java/
2 http://www.javaworld.com/article/2077372/learn-java/static-class-declarations.html
3 http://viralpatel.net/blogs/inner-classes-in-java/
'Statique à l'intérieur de la classe/membre/la fonction' est un multiple contradiction dans les termes.
OriginalL'auteur MKJParekh
Vous pouvez aussi tout simplement mettre en œuvre ItemViewAdapter comme une classe statique
Qui devrait prendre soin de l'erreur
OriginalL'auteur Eugene Kwame Anane