PC:Windows10 1607 AndroidStudio:2.2.3
Ein Infrastruktur-Server-Ingenieur, der normalerweise (vorerst) mit Linux-Servern herumspielt. Die Client-Seite ist fast leer. Ich bin neu in der Entwicklung mit IDE und Java selbst und lerne von Grund auf, während ich das Einführungsbuch lese.
Erstellen und Lernen von Apps, die auf Android ausgeführt werden (Letztendlich möchte ich die auf dem PC erstellte Anwendung auf dem Android-Terminal ausführen und mit meinem eigenen Server kommunizieren, um dies und das zu tun.)
Wenn ich die installierte Taste drücke und versuche, die Methode mit onClick auszuführen, stürzt die Anwendung ab. Es fällt nicht immer und manchmal funktioniert es gut, wenn Sie in der IDE damit herumspielen.
Ich mache eine einfache Anwendung zur Überprüfung des Betriebs mit Android Studio. Versuchen Sie beim Lesen des Buches, Schaltflächen und Texte anzuordnen, rufen Sie die Methode mit onClick auf und lassen Sie sie etwas verarbeiten. Ich konnte alles tun, wie es in Toast anzuzeigen und den Text neu zu schreiben (ich konnte es tun ...). Das Nachschlagewerk ist hier
Danach bin ich süchtig nach dem folgenden Verfahren in der Situation, in der ich von Grund auf neu codiere. ..
Was ich gerade versuche zu machen, geht auf das einfachste zurück,
Rufen Sie mit onClick eine bestimmte Methode auf, wenn Sie die installierte Taste drücken
Die aufgerufene Methode zeigt in Toast nur "Clicked" an
Es gibt nur zwei Punkte.
Erstellen Sie ein neues Projekt. Der Projektname, mit dem die Reproduktion dieses Mal bestätigt wird, lautet "TestApp 9". Das Minimum SDK beginnt mit API Level: 15 und die Aktivität beginnt mit Empty Activity.
Ich brauche die standardmäßig platzierte Textansicht nicht, also lösche sie.
Bearbeiten Sie MainActivity.java und fügen Sie den folgenden Inhalt hinzu.
MainActivity.java
~~~Der Importteil entfällt~~~
public class MainActivity extends AppCompatActivity {
Button buttonTtest; //Nachtrag
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonTtest = (Button) findViewById(R.id.buttonTest); //Nachtrag
}
//Fügen Sie eine Methode hinzu, die den Inhalt beschreibt, den Sie mit onClick verschieben möchten
public void onButtonTestClick(View view) {
Toast.makeText(this, "clicked", Toast.LENGTH_SHORT).show();
}
}
Zusätzlich zu onCreate, das von Anfang an geschrieben wurde, schreibe ich einen neuen Teil, den ich hinzugefügt habe.
Stellen Sie sicher, dass Sie es auswählen können, aber versuchen Sie es, ohne es auszuwählen (lassen Sie keine).
Wenn ich die "TEST" -Taste drücke, passiert natürlich nichts (abgesehen davon mache ich mir Sorgen, dass der Wert von @ string / buttonTest in Großbuchstaben angezeigt wird, obwohl er sich im unteren Teil befindet. Ich frage mich, ob Kleinbuchstaben verwendet werden können, wenn sie gestylt sind.
IDE ist praktisch, aber ich habe immer noch Angst, weil ich nicht weiß, was hinter den Kulissen funktioniert (kann ich mir vorstellen)
Lass uns gehen! Ruined s (unten abgekürzt Wird angezeigt und die App funktioniert nicht mehr. Zu diesem Zeitpunkt wird die folgende Java-Ausnahme in der Spalte Ausführen von Android Studio in Rot ausgegeben (oder?).
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 klingt unangenehm. Ich kann mich nicht erinnern, etwas getan zu haben, das mich wütend gemacht hat, aber ich werde die Fehlerdetails vorerst überprüfen.
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'
Es heißt, dass die Methode nicht gefunden werden konnte, daher kann ich die für onClick (゚ Д ゚) Gol 'angegebene Methode nicht finden, nicht wahr? Ich denke. Auch wenn ich es nicht finden konnte, wurde es von der IDE erkannt und ich konnte es aus der Dropdown-Liste auswählen. .. Ich werde es ein wenig tun.
Danach ist viel geschrieben, aber ehrlich gesagt verstehe ich nicht. Da es View.Java: 4084 gibt, ist es sicher, dass das Iloilo-Problem hinter dem Ergebnis des Fehlers aufgetreten ist, nicht hinter dem Fehler in dem Teil, den ich geschrieben habe. Ich denke, das Wichtigste ist der erste Fehler.
Nun, ich konnte es einmal tun, warum? Ich werde ein wenig damit spielen.
Es gibt zwei w, dieses w Ww das erhöht sich nicht ohne Erlaubnis
Ich werde auskommentieren. (Ich war überrascht, dass viel Code generiert wurde, als ich ↓ mit Strg + Alt mit dem Gefühl eines Multi-Headers von Sublime Text auswählte.)
Ja, ich bin weg. Wenn Sie es groß bauen, haben Sie natürlich eine App mit Schaltflächen, die überhaupt nicht reagieren. Ich kehrte zum Anfang zurück.
Es scheint, dass View und Toast beim Kommentieren automatisch aus dem Import gelöscht wurden. Es ist bequem, aber es ist zu bequem. Wenn Sie Strg + Alt drücken, wenn es rot ist, wird es automatisch importiert, also importieren Sie es erneut.
Der eine, der zwei war, ist zu einem zurückgekehrt. Ist es ein Ort, an dem Sie sich vorerst wohl fühlen können? Als ich heute hier mehrmals herumgespielt habe, konnte ich es so zurücksetzen und wieder aufbauen und es hat funktioniert! !! Es gab einen Fall, aber wenn ich ihn jetzt überprüfe, funktioniert er nicht mit demselben Fehler. ..
Es ist beängstigend, es ohne Erlaubnis zu erhöhen, deshalb werde ich versuchen, es hier explizit zu erhöhen. Ich habe onButtonClick2 gemacht.
Ja, das ist richtig. Das ist gut. Da es eine große Sache ist, bauen wir mit der neu erstellten 2.
Aber schließlich tritt beim Erstellen und Ausführen derselbe Fehler auf. .. Am Ende so. ..
Deshalb mache ich wwwwwwww zum Narren
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.
Die Fehlermeldung wird auch in 2 korrekt angezeigt.
Niemand liebt die Apps, die ich gemacht habe
Wenn Sie in der Nähe der Fehlermeldung googeln, wird ↓ dieser Bereich getroffen.
stackoverflow(1) => Ist es nicht ein Tippfehler? Wies darauf hin. Dieses Mal wähle ich eine Methode über die Android Studio-Benutzeroberfläche aus, daher glaube ich nicht, dass dies der Fall ist. ..
stackoverflow(2) => Es ist, als würde man verschiedene Dinge tun und verschiedene Dinge tun wäre cool. Ich habe diesmal nicht so viel getan ...
teratail => Oh, es sieht aus wie diese Person. Irgendwie ist die Antwort hart. w Verstehst du die Bedeutung des onClick-Attributs? => Ich glaube nicht, dass ich es überhaupt verstehe, ich bin mir sicher, vielleicht. ..
stackexchange => Oh, das ist es nicht? Ich weiß nicht was es ist, aber ich habe etwas gefunden, das so aussieht! !!
Update your Gradle to lastest version first and try again. I hope that can be solved your issue by this solution.
Nun, es ist nicht gut, den Mon zu erziehen, der ohne Erlaubnis hereinkam. .. Ich will es nicht tun .. Vorerst.
Als Problemumgehung, die im obigen Artikel erwähnt wurde, haben wir bestätigt, dass es mit der folgenden Korrespondenz betrieben werden kann.
Dies
mach das
Dann
Der Toast wurde wunderbar angezeigt. Die von onClick angegebene Methode wurde als "onButtonTestClick (MainActivity)" geschrieben, und die Rückseite (MainActivity) war Irane (ich werde ohne Erlaubnis einsteigen!). .. Nun, ich verstehe immer noch nicht die Bedeutung von Proliferation. ..
Wenn Sie etwas über diese Angelegenheit wissen, würde ich mich freuen, wenn Sie uns Ihre Meinung mitteilen könnten. m (_ _) m
Recommended Posts