Announcement

Collapse
No announcement yet.

Bei Schleifendurchlauf ButtonClick abwarten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bei Schleifendurchlauf ButtonClick abwarten

    Ich versuche mich erst seit kurzem an kleinen Apps und meine Java-Erfahrung lässt auch zu wünschen übrig. Ich habe mir selbst eine kleine Aufgabe gestellt: Bei einem Spiel soll die Anzahl der Mitspieler flexibel sein, sie wird am Anfang eingegeben. Dann soll jeder Mitspieler seinen Namen eingeben, der dann in einer Liste landet. Ich hatte mir das so vorgestellt: Schleife, die bis zur gewünschten Anzahl von Mitspieler zählt. Im Schleifenkörper wird der Inhalt vom EditText abgefragt, der Button gefunden und sein Listener gesetzt. In der OnClick vom Button wird der Text (= NAme des Spielers) in der Liste abgelegt. Dann wird die Schleife wieder durchlaufen.

    Nur leider ist es wohl nicht ganz so seinfach. Ich hab versucht, eine Art Flag zu setzen, das geändert wird, wenn der Button geklickt wurde. Auch nicht erfolgreich. Mittlerweile verursacht das Ganze Endlosschleifen, die mein Smartphone lahmlegen...

    Die OnClick sieht so aus:
    Code:
    public void onClick(View v) {
    			playerName = name.getText().toString();
    			Log.d("neuer name", playerName);
    			if(!listPlayers.contains(playerName))
    				listPlayers.add(playerName);
    			name.setText("");
    			pressed = true;
    }
    letzter Versuch der Schleife:
    Code:
    TextView playerNumber = (TextView) findViewById(R.id.playercount);
    		name = (EditText) findViewById(R.id.name);
    		save = (Button) findViewById(R.id.bplayername);
    		save.setOnClickListener(savelistener);
    		
    		for (int i = 0; i < numberP; i++) {
    			playerNumber.setText("" + (listPlayers.size()+1));
    			while(pressed) {
    				Log.d("while schleife", "true");
    				pressed = false;
    				break;
    			}
    		}
    oder ein anderer Ansatz:
    Code:
    int i = 0;
    		while(i < numberP) {
    			
    			Log.d("Schleife", ""+listPlayers.size());
    			TextView playerNumber = (TextView) findViewById(R.id.playercount);
    			playerNumber.setText("" + listPlayers.size());
    			name = (EditText) findViewById(R.id.name);
    			save = (Button) findViewById(R.id.bplayername);
    			save.setOnClickListener(savelistener);
    			if(pressed!=false) {
    				pressed = false;
    				i++;
    				continue;
    			}
    			else continue;
    		}
    Hat jemand einen Tipp für mich? Brauche ich etwa Threads dafür? Oder sind Listener in Verbindung mit Schleifen generell eine blöde Idee?
    --------------- Stephanie

  • #2
    Ich verstehe den Code zu Aufgabe nicht.
    Was für ein Button? Was macht der? Warum gibt den den für jeden Spieler?

    Deshalb allgemein mit ein paar Vermutungen:

    Irgendwo gibt es die Eingabe der Anzahl der Spieler. Die steht also dann fest.
    Irgendwo gibt es einen Button und ein Editfeld. Das Editfeld enthält den Namen, der Button nimmt den neuen Namen in die List auf. Dafür gibt es EIN Editfeld und EIN Button.

    Wurde also nun eingegeben, dass es 5 Spieler gibt, so wird eine globale Variable mit dem Namen aktspielerEingabe auf 0 gesetzt

    Wird nun der Button gedrückt, so wird der Name aus dem Editfeld gelesen und als [aktspielerEingabe] in die Liste aufgenommen (oder einfach angehängt). Das Editfeld wird geleert, aktspielerEingabe um 1 erhöht.

    oder

    Wird nun der Button gedrückt, so wird der Name aus dem Editfeld gelesen. Ist kein Name vorhanden, passiert nichts

    Das ganze wird wiederholt, solange aktspielerEingabe<5 ist

    Es braucht keine Buttons je Spieler und nur eine Schleife die solange läuft, bis alle Namen eingeben wurden, bzw. in ereignisgesteierten Oberflächen wird bei aktspielerEingabe==5-1 wird das nächste Fenster o.a. angezeigt
    Zuletzt editiert von Christian Marquardt; 02.02.2014, 13:32.
    Christian

    Comment


    • #3
      Der Button soll dazu dienen, die Eingabe eines Namens zu bestätigen. Dann soll das EditFeld geleert werden, damit der nächsten seinen Namen dort eingibt und mit demselben Button bestätigt. (Deshalb ist es vermutlich keine gute Idee, Button und Listener innerhalb der Schleifen zu erstellen bzw. zu setzen). Mein Problem: entweder entwickelt es sich zur Endlos-Schleife, in der ich das Eingabefeld gar nicht zu Gesicht bekommen habe (erster Codeschnipsel der Schleife). Oder ich kann einen Namen eingeben, des Eingabefeld wird geleert, aber der Zähler bleibt bei der 1. Eingabe, es geht also nicht weiter.

      Es braucht keine Buttons je Spieler und nur eine Schleife die solange läuft, bis alle Namen eingeben wurden - genau das war mein Plan, aber ich schaffe es nicht, einen geordneten Schleifendurchlauf zu produzieren. Und verstehe gar nicht wieso, denn bisher hatte ich keine Schwierigkeiten mit Zählschleifen...
      --------------- Stephanie

      Comment


      • #4
        Wenn du im ersten Schnipsel noch reinbringst wieviele Namen schon drin sind und dann das beendest, ist es doch fertig


        if(listPlayers.size()==MaximaleAnzahl)
        {
        Ende der Nameseingabe-> Neues Fenster, o.a
        }

        GUI-Oberflächen sind ereignisgesteuert (Buttonclick, Eingabe im Editfeld usw.)
        Deshalb gibt es keine Schleife, sondern die Entscheidung wie oft darf der Button geklickt werden, bevor es weitergeht
        Zuletzt editiert von Christian Marquardt; 02.02.2014, 13:54.
        Christian

        Comment


        • #5
          Super, dankeschön jetzt läuft es prima ohne die komische Schleife
          --------------- Stephanie

          Comment


          • #6
            Schön, dass es geht
            Christian

            Comment

            Working...
            X