Int aktualisierung nach onClick()

  • Antworten:6
Parasite
  • Forum-Beiträge: 56

10.10.2018, 14:52:06 via Website

public class Quiz{

int R = 0;

onClick(){

R++; // Hier ist eine if-Anweisung, die auf einen boolean zugreift der true or false ist, bei true macht er R++;

}

public void falseorright(){

if (R == 1) {
button5.setBackgroundResource(R.drawable.green);
}else{
button5.setBackgroundResource(R.drawable.red);
}
R--;
}
}

Ich hab da Problem das er den Button immer nur auf rot setzt, kann es sein das er den int nach onClick() noch nicht aktualisiert? Ich muss wissen ob der int aktualiesiert wird, ansonsten liegt das Problem woanders.

Kommentieren
Jokel
  • Forum-Beiträge: 1.530

10.10.2018, 16:45:32 via Website

Hi

Ich hab da Problem das er den Button immer nur auf rot setzt, kann es sein das er den int nach onClick() noch nicht aktualisiert?

Dann währe es sinn voll uns auch die onClick Methode zu zeigen.
So kann hier keiner eine Antwort geben was in der onClick passiert.

In deiner falseorright() Methode.

Wenn es immer rot ist heißt es, das dein „R“ in falseorright() nie gleich 1 ist, und somit immer in den else Zweig geht.
Auch wenn "R" grösser 1oder kleiner 0 ist wird nach else verzweigt.
zB R= -1,0, 2,3
da du ja genau auf 1 Prüfst.

warum setzt du dein "R" auserhalb der If wieder auf dein vermeidliches "0" ?
durch R--; und nicht R=0;
wenn es null war wird es somit -1,

Im übrigen mit so gekürzten Code kann man im allgemeinen nicht viel Anfangen.

— geändert am 10.10.2018, 17:56:52

Hilfreich?
swa00
Kommentieren
Parasite
  • Forum-Beiträge: 56

11.10.2018, 08:55:12 via Website

Die if anweisung ist egal, du hast mir schon geholfen aber eigentlich möchte ich nur wissen ob es sein kann das er von onClick die int werte nicht überträgt?

Was ich vergessen hab ist, falsorRight wird am ende der onClick ausgeführt.

Hilfreich?
Kommentieren
Parasite
  • Forum-Beiträge: 56

11.10.2018, 08:57:42 via Website

Du hast mir meinen Denkehler aber glaub ich schon aufgezeigt, danke 😊

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

11.10.2018, 12:17:33 via Website

Mal zur Info es wird in deimen Code nichts von der onClick zu deiner Methode übertragen. Denn du hast keine übergabe Parameter definiert.
Dein "R" so wie du es und dargestellt hast ist eine im klassenrumpf global erstellte Variable, auf die hast du von überall in der Klasse Zugriff ohne etwas zuübergeben.

Thema globale lokale Variablen.

Hilfreich?
Kommentieren
Parasite
  • Forum-Beiträge: 56

12.10.2018, 01:49:48 via Website

Ja, also liegt es nicht daran das er den Wert nicht erkennt, sondern das der Wert einfach falsch ist und deswegen immer else rauskommt 😊

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

12.10.2018, 08:27:42 via Website

Genau.
Wie dir schon öfter gesagt wurde solltest du erstmal die Grundlagen von OOP und Java nochmal wieder holen.
Denn du bringst oft einiges durcheinander. Sprichst von übergeben wo nichts übergeben wird.
Von übergabe spricht man wenn du in den runden Klammern beim Methoden aufruf Parameter angiebst.
Das hast du nicht.

Sichtbarkeit von Variablen ist auch so ein Thema wo es bei dir hakt.

Gewöhne dich etwas an die Ausdrücke und formulierungen die in Java üblich sind. Wenn du es uns schon so verwirt formulierst, weis ich das du es noch nicht verstanden hast. Sonst würdest du nicht auf die Idee kommen das eine Variable nicht erkannt wird. Somal sie Global für die Klasse sichtbar ist.

Wenn du dir es nicht merken kannst welche variable global ist und welche lokal dann überlege dir eine sinnvolle Namenskonvetion also ein suffix vor dem eigentlichen namen.
Im übrigen schreibt man Variablen klein. Klassen groß.
all das hilft dir eine besser lesbarkeit zu ereichen auch noch nach wochen oder Monaten. Dann musst du nicht immer erst die Variablen Definition suchen um zu wissen was sie ist.

https://www.google.de/url?sa=t&source=web&rct=j&url=https://de.m.wikibooks.org/wiki/Java_Standard:_Variablen_und_Bezeichner&ved=2ahUKEwjY5s6BooDeAhVHLFAKHZI0AN4QFjACegQIBRAB&usg=AOvVaw0LK_UfJYdp9x_NLAtI2MPI

— geändert am 12.10.2018, 11:26:53

Hilfreich?
Kommentieren