2016-09-21 4 views
1

Ich versuche zu lernen, wie der Debugger funktioniert, also habe ich das folgende Beispiel erstellt und einen Bruchpunkt an der Zeile, die unten im Code erwähnt. Als ich den Debugger lief, erwartete ich, dass nur der Wert der Varibale "a" auf dem Bildschirm angezeigt wird, aber tatsächlich wurde nichts angezeigtWert der Variablen werden nicht über Debugger angezeigt

warum der Wert der Variablen "a" nicht ist mit dem TextView "this.mTV2" auf dem Bildschirm angezeigt?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    this.mTV1 = (TextView) findViewById(R.id.tv1); 
    this.mTV2 = (TextView) findViewById(R.id.tv2); 
    this.mTV3 = (TextView) findViewById(R.id.tv3); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 

    int a, b, c; 
    int x = 30; 
    int y = 40; 
    int z = 50; 

    a = x + y; 
    b = y + z; 
    c = x + z; 

    this.mTV1.setText("" + a); 
    this.mTV2.setText("" + b);//BREAKING POINT HERE 
    this.mTV3.setText("" + c); 
} 
+0

wahrscheinlich ist nicht relevant, aber nur für einen Versuch können Sie den Code alle innerhalb der onCreate setzen? und kannst du auch das xml von activity_main angeben? –

+0

Also bist du an dem "a" vorbeigegangen und hast dann den Wert überprüft und es zeigt nichts? Oder null? – Danieboy

+1

Nicht absolut sicher, aber ich denke, der Bildschirm wird nicht gezeichnet, wenn die OnResume-Methode ausgeführt wird, wird es nicht angezeigt, nachdem OnResume beendet wurde? – Cruces

Antwort

1

Ich versuche, dies zu erklären:

Wenn Sie einen Blick auf das folgende Bild haben, es zeigt die Android-Lebenszyklus. Wie Sie sehen, läuft die Aktivität nach onCreate und onPause, das heißt, selbst wenn Sie in diesen Methoden Haltepunkte setzen, sehen Sie nichts auf dem Bildschirm, weil das Layout noch nicht aktualisiert wurde.

Im Debugger können Sie die Werte der Variablen sehen, aber nicht die Werte auf dem Bildschirm.

enter image description here

Es gibt kein Dienstprogramm auf Debug-Bildschirmtexten weil der Nutzen des Debugger Debuggen von Code, nicht-Layout.

Wenn Sie immer noch das Layout debuggen möchten, besteht Ihre einzige Möglichkeit darin, eine Methode für eine Aktion (z. B. einen Knopfklick) zu erstellen und diese Methode zu debuggen.

Da die UI bereits gezeichnet wird, werden Sie sehen, dass die Texte aktualisiert werden, aber wie ich bereits sagte, es gibt kein Dienstprogramm beim Anzeigen der Layoutaktualisierung, der Punkt zeigt, welche Werte für die Variablen in der Zeile gelten, die Sie stoppen beim.

Hoffe, dass geholfen

1

Sie haben das Gerät während onResume gestoppt. Zu diesem Zeitpunkt wurde nichts gezeichnet, stattdessen haben Sie die Textwerte festgelegt. Nach Abschluss dieser Funktion wird die Benutzeroberfläche neu gezeichnet und Sie sehen die Änderungen. Dies ist eine Optimierung, die der meiste UI-Entwicklungscode vornimmt.

+0

ok..when oder wo shouldi fügen Sie eine Bruchstelle – user2121

0

Alle Ansichten sind auf dem Bildschirm sichtbar, wenn die Aktivitätslebenszyklusmethoden abgeschlossen sind, d. H. OnCreate, onStart und onResume. Ihr Gerät wird gestoppt, während Sie in onResume debuggen. Nachdem onResume abgeschlossen ist, werden die Ansichten neu gezeichnet, wenn sie bereits gezeichnet wurden und Sie können das Ergebnis sehen.

+0

ok..when oder wo sollte ich einen Bruchpunkt hinzufügen – user2121

+0

Sie sollten einen Haltepunkt setzen, wo Sie möchten, dass der Debugger zu stoppen ausführen und warten, bis Sie Ihren Code Schritt für Schritt bearbeiten oder direkt zum nächsten Haltepunkt springen. Unterbrechungspunkt beendet die Ausführung Ihres Codes nicht. Sobald die Lebenszyklusmethode abgeschlossen ist, können Sie Ihre Ergebnisse sehen. – Nishith

Verwandte Themen