PC:Windows10 1607 AndroidStudio:2.2.3
Un ingénieur de serveur d'infrastructure qui joue habituellement avec les serveurs Linux (pour le moment). Le côté client est presque vide. Je suis nouveau dans le développement en utilisant IDE et Java lui-même, et j'étudie à partir de zéro en lisant le livre d'introduction.
Créer et apprendre des applications qui s'exécutent sur Android (En fin de compte, je souhaite exécuter l'application construite sur le PC sur le terminal Android et communiquer avec mon propre serveur pour faire ceci et cela)
Lorsque j'appuie sur le bouton installé et que j'essaye d'exécuter la méthode avec onClick, l'application plante. Cela ne tombe pas toujours, et parfois cela fonctionne bien si vous le manipulez sur l'IDE.
Je crée une application de vérification de fonctionnement simple avec Android Studio. En lisant un livre, essayez d'organiser les boutons et le texte, appelez une méthode avec onClick, laissez-la faire quelque chose, J'ai pu tout faire comme l'afficher dans Toast et réécrire le texte (j'ai pu le faire ...). Le livre de référence est ici
Après cela, je suis accro à la procédure suivante dans la situation où je recode à partir de zéro. ..
Ce que j'essaye de faire maintenant revient au plus simple,
Appelez une méthode spécifique avec onClick lorsque vous appuyez sur le bouton installé
La méthode appelée affiche simplement "Cliqué" dans Toast
Il n'y a que deux points.
Créez un nouveau projet. Le nom du projet utilisé pour confirmer la reproduction cette fois-ci est "TestApp 9". En outre, le SDK minimum commence par le niveau d'API: 15 et l'activité commence par une activité vide.
Je n'ai pas besoin du textView qui est placé par défaut, alors supprimez-le.
Modifiez MainActivity.java et ajoutez le contenu suivant.
MainActivity.java
~~~La partie importée est omise~~~
public class MainActivity extends AppCompatActivity {
Button buttonTtest; //Postscript
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonTtest = (Button) findViewById(R.id.buttonTest); //Postscript
}
//Ajoutez une méthode qui décrit le contenu que vous souhaitez déplacer avec onClick
public void onButtonTestClick(View view) {
Toast.makeText(this, "clicked", Toast.LENGTH_SHORT).show();
}
}
En plus de onCreate écrit depuis le début, j'écris une nouvelle partie que j'ai ajoutée.
Assurez-vous de pouvoir le sélectionner, mais essayez de créer sans le sélectionner (ne laissez aucun).
Bien sûr, lorsque j'appuie sur le bouton "TEST", rien ne se passe (en passant, je crains que la valeur de @ string / buttonTest soit en majuscules même si je la mets en bas. Je me demande si des lettres minuscules peuvent être utilisées si elles sont stylées).
L'IDE est pratique, mais j'ai toujours peur car je ne sais pas ce qui fonctionne dans les coulisses (j'imagine)
Allons-y! Ruined s (abrégé ci-dessous Sera affiché et l'application cessera de fonctionner. À ce stade, l'exception Java suivante est affichée en rouge dans la colonne Exécuter d'Android Studio (n'est-ce pas?).
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not find method onButtonTestClick (MainActivity)(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'buttonTest'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Application terminated.
IllegalStateException semble désagréable. Je ne me souviens pas d'avoir fait quoi que ce soit qui m'ait mis en colère, mais je vais vérifier les détails de l'erreur pour le moment.
java.lang.IllegalStateException: Could not find method onButtonTestClick (MainActivity)(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'buttonTest'
Il indique Impossible de trouver la méthode, donc je ne trouve pas la méthode que vous avez spécifiée pour onClick (゚ Д ゚) Gol ', n'est-ce pas? Je pense. Même si je ne pouvais pas le trouver, il était reconnu par l'EDI et je pouvais le sélectionner dans la liste déroulante. .. Je vais le faire un peu.
Après ça, c'est beaucoup écrit, mais honnêtement je ne comprends pas. Puisqu'il y a View.Java: 4084, il est certain que le problème d'Iloilo est survenu derrière le résultat de l'erreur, pas l'erreur dans la partie que j'ai écrite. Je pense que l'important est la première erreur.
Eh bien, j'ai pu le faire une fois, pourquoi? Je vais jouer un peu avec.
Il y a deux w, ce w Ww qui n'augmente pas sans permission
Je vais commenter. (J'ai été surpris que beaucoup de code ait été généré lorsque j'ai sélectionné ↓ avec Ctrl + Alt avec la sensation de multi-en-tête de Sublime Text.)
Oui, je suis parti. Si vous le construisez en grand, vous aurez naturellement une application avec des boutons qui ne répondent pas du tout. Je suis revenu au début.
Il semble que View et Toast ont été automatiquement supprimés de l'importation lorsque j'ai commenté. C'est pratique, mais c'est trop pratique. Si vous appuyez sur Ctrl + Alt alors qu'il est rouge, il sera importé automatiquement, alors importez-le à nouveau.
Celui qui était deux est revenu à un. Est-ce un endroit où vous pouvez vous sentir à l'aise pour le moment? Donc, quand je déconnais ici plusieurs fois aujourd'hui, je pouvais le remettre comme ça et le reconstruire et ça a marché! !! Il y avait un cas, mais si je le vérifie maintenant, cela ne fonctionnera pas avec la même erreur. ..
C'est effrayant de l'augmenter sans permission, alors je vais essayer de l'augmenter explicitement ici. J'ai fait onButtonClick2.
Oui c'est vrai. C'est bon. Comme c'est un gros problème, construisons avec le 2.
Mais après tout, lorsque je le construis et l'exécute, la même erreur se produit. .. En fin de compte, comme ça. ..
C'est pourquoi je me moque de wwwwwwww
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not find method onButtonTestClick2 (MainActivity)(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'buttonTest'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Application terminated.
Le message d'erreur s'affiche également correctement dans 2.
Personne n'aime les applications que j'ai créées
Si vous recherchez sur Google près du message d'erreur, ↓ cette zone sera frappée.
stackoverflow(1) => N'est-ce pas une faute de frappe? Souligné. Cette fois, je sélectionne une méthode dans l'interface graphique d'Android Studio, donc je ne pense pas que ce soit le cas. ..
stackoverflow(2) => C'est comme faire diverses choses et faire diverses choses serait cool. Je n'ai pas fait grand chose cette fois ...
teratail => Oh, ça ressemble à cette personne. D'une manière ou d'une autre, la réponse est dure. w Comprenez-vous la signification de l'attribut onClick? => Je ne pense pas comprendre du tout, j'en suis sûr, peut-être. ..
stackexchange => Oh, ce n'est pas ça? Je ne sais pas ce que c'est, mais j'ai trouvé quelque chose qui y ressemble! !!
Update your Gradle to lastest version first and try again. I hope that can be solved your issue by this solution.
Eh bien, ce n'est pas bon d'élever le garçon qui est entré sans permission. .. Je ne veux pas le faire. .. Pour le moment.
Comme solution de contournement mentionnée dans l'article ci-dessus, nous avons confirmé qu'il peut être utilisé avec la correspondance suivante.
cette
fais ça
Puis
Le toast était affiché à merveille. La méthode spécifiée par onClick a été écrite comme "onButtonTestClick (MainActivity)", et l'arrière (MainActivity) était Irane (je vais entrer sans permission!). .. Eh bien, je ne comprends toujours pas le sens de la prolifération. ..
Si vous avez des connaissances à ce sujet, je vous serais reconnaissant de bien vouloir nous donner votre avis. m (_ _) m
Recommended Posts