J'essaie d'étendre Ceci est la classe prolongée: P > Et c'est la façon dont je suis instantanée de cette classe: p> Ceci donnez-moi une erreur au moment de l'exécution. P > Tout cela est si mais maintenant, si je déclare aussi je suis sûr que le problème est-ce que je dois déclarer ceci va sans problème La première ligne mais donne une erreur d'exécution dans le second puis le problème ne crée pas de nouveau Peut-être que je fais quelque chose qui ne va pas dans la mise en page, c'est comme la façon dont je déclare spinner code> Classe Android dans mon code pour mettre en œuvre une nouvelle fonction, mais pour une raison quelconque, cela n'a pas fonctionné.
r.id.sphofentries code> est déclaré dans ma mise en page en tant que spinner. p>
sphofentries code> En tant que
Customspinner Code> I Obtenir une erreur d'exécution Juste dans le moment où je définis la mise en page sur l'activité: p>
sphofentries code> en tant que
Customspinner code> car si je le fais: p>
Customspinner CODE> mais définit le
SPHOFENTRIES code> dans ce
Customspinner code> ( Ceci avec
sphofentries code> déclencher a déclaré comme un
Spinner code> pas un
Customspinner code>). p>
sphofentries code> en tant que
Customspinner code>: p>
3 Réponses :
C'est une erreur commune. Il suffit d'ajouter ce constructeur, lequel est celui appelé par la mise en page Inflatérielle:
public CustomSpinner(Context context, AttributeSet attrs) { super(context, attrs); }
J'ai essayé cela, mais le débogueur n'arrive même pas à entrer cette fonction (pas l'autre). J'ai édité la question au test que j'ai fait.
est SPHOFENTRIES A Il faudrait être déclaré comme un L'inverse autour durerait. Vous seriez capable de jeter un Spinner code> ou A
Customspinner code>? p>
Customspinner CODE> dans votre présentation pour que vous puissiez la jeter en tant que
Customspinner code> dans votre code. P>
Customspinner code> en tant que Spinner code>, car il s'agit d'une sous-classe. P>
J'ai édité la question en considérant votre réponse. Peut-être que je fais quelque chose de mal dans la mise en page?
J'ai fait la même chose auparavant dans mes aménagements et cela fonctionne, la seule différence est que je devais utiliser l'espace de noms entièrement qualifié (ou l'emballage ou quoi que ce soit appelé Java). Essayez d'utiliser le nom complet de votre mise en page et voyez si cela fait une différence. (c'est-à-dire <
Enfin, il y avait deux raisons de ne pas fonctionner correctement, les deux réponses précédentes ont raison:
Il est nécessaire de définir également le deuxième constructeur avec le paramètre attributset. P>
Dans la mise en page Le fileur doit être défini comme un personnalisé et doit être déclaré avec tout le nom complet: P>
@fishjd d'accord, a fait le changement.
Y a-t-il un moyen d'éviter d'utiliser un nom pleinement qualifié? déclarer, importer quelque chose, quelque part?
Customspinner Spinner = Nouveau Customspinner (this); Spinner = (Customspinner) Findview (R.Id.sphofentries); signifie que vous ne comprenez pas comment fonctionne Android. Avant d'essayer d'écrire vos propres widgets, je recommanderais de lire et de tester les exemples de base.