1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Extremefall, 28.06.2012 #1
    Extremefall

    Extremefall Threadstarter Android-Hilfe.de Mitglied

    Hallo,
    wie kann ich zwei Methoden hintereinander ausführen, also sodass Methode eins erst beendet sein muss, bevor Methode zwei beginnt? Wie geht so etwas in Android?
     
  2. wilco, 28.06.2012 #2
    wilco

    wilco Android-Hilfe.de Mitglied

    Du kannst eine Methode als "synchronized" deklarieren. Das bedeutet im wesentlichen dass sie nicht unterbrochen werden kann.

    Mehr dazu hier.
     
  3. Extremefall, 28.06.2012 #3
    Extremefall

    Extremefall Threadstarter Android-Hilfe.de Mitglied

    Ich habe nun eine Figur und auf gleicher Höhe ein Hindernis als Bild. Hier mein Code zum bewegen der Figur:
    Code:
    private synchronized void vorwaerts(int schritte) {
    		ImageView figur = (ImageView) findViewById(R.id.spielfigur);
    		ImageView wand= (ImageView) findViewById(R.id.wand);
    		if (!Rect.intersects(generateRect(figur), generateRect(wand))) {
    			bot_hindernis = false;
    			MarginLayoutParams marginParams = new MarginLayoutParams(
    					figur.getLayoutParams());
    			marginParams.setMargins(getMarginLeft() + schritte, getMarginTop(),
    					getMarginRight(), getMarginBottom());
    
    			RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
    					marginParams);
    			figur.setLayoutParams(layoutParams);
    		} else {
    			bot_hindernis = true;
    			Log.d("Hindernis",""+bot_hindernis);
    			 gehZurueck(schritte);
    		}
    	}
    
    bot_hindernis ist vorher auf false gesetzt.

    Meine Frage: Wieso kann ich denn dann nicht folgendes machen:
    Code:
    while (!bot_hindernis){
    vorwaerts();
    }
    
    Der Bildschirm im Emulator zeigt dann nichts mehr an und dann die Meldung, dass man entweder warten kann oder die App beenden kann, da sie nicht mehr reagiert. Wieso kommt es denn dazu? Könnt ihr mir da helfen? Denn deswegen wollte ich die Methoden nacheinander aufrufen. Wenn ich die Methoden einfach selbst ein paar Mal aufrufe, klappt es auch ganz normal. Nur mit der Schleife nicht.
     
  4. usaris, 28.06.2012 #4
    usaris

    usaris Erfahrener Benutzer

  5. Thyrion, 29.06.2012 #5
    Thyrion

    Thyrion Ehrenmitglied

    Was ist denn vorwaerts()? Oben hast du uns vorwaerts(int schritte) vorgestellt.

    Und den Aufruf kannst du machen, nur Android beschwert sich, dass der Aufruf zu lange dauert und "denkt" die App könnte in einer Endlosschleife festhängen und fragt sicherheitshalber mal den Benutzer, was zu tun ist. Das dürfte passieren, wenn schritte == 0 ist, oder deine Kollisionsabfrage nicht funktioniert.
     
  6. Tom299, 29.06.2012 #6
    Tom299

    Tom299 Android-Experte

    Für mich sieht das so aus, als würde er keinen Thread verwenden
     
  7. Extremefall, 29.06.2012 #7
    Extremefall

    Extremefall Threadstarter Android-Hilfe.de Mitglied

    Wie meinst du das mit dem Thread? Wie mache ich es denn mit einem Thread? Denn diesen habe ich eigentlich nicht genutzt. Liegt da der Fehler?

    Ich habe natürlich vergessen, den Parameter im Code anzugeben. In meinem Testcode habe ich es nun gemacht.

    Könnt ihr mir irgendwie weiterhelfen? Mit Debuggen habe ich es schon probiert. Ich habe folgendes: Beim onClick wird die Method vorwaerts(10) aufgerufen. Das klappt auch soweit. Nun klicke ich zehn mal auf den Button und es wird dann beim Debuggen richtigerweise angezeigt, dass die Wand vor der Figur ist.

    Nun habe ich folgendes gemacht:
    Code:
    vorwaerts(10);
    vorwaerts(10);
    vorwaerts(10);
    vorwaerts(10);
    vorwaerts(10);
    vorwaerts(10);
    vorwaerts(10);
    vorwaerts(10);
    vorwaerts(10);
    vorwaerts(10);
    Das Problem nun: Die Figur geht genauso weit, nur diesmal wird der Schnitt mit der Wand nicht erkannt. Wie kommt das? Was kann ich da machen? Denn dann hilft mir das Debuggen bisher noch nicht. Denn ich sehe, dass intersect false liefert, was für mich momentan keinen Sinn macht.
     
  8. Extremefall, 30.06.2012 #8
    Extremefall

    Extremefall Threadstarter Android-Hilfe.de Mitglied

    Wie muss ich die Methode denn mit Threads aufrufen? Liegt es eventuell daran oder woran könnte es bei meiner Problemschilderung am ehesten liegen?
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Android O Neue Fonts in XML Methode Android App Entwicklung 27.07.2017
[OFFEN/DISKUSSION] Auf der Suche nach der besten Purchase Methode Android App Entwicklung 24.03.2017
[OFFEN] Snackbar Textzeilen setzen in einer onclick methode Android App Entwicklung 17.03.2017
Tage zwischen zwei Terminen berechnen Android App Entwicklung 22.02.2017
SQL-Abfrage über zwei Tabellen realisieren Android App Entwicklung 12.02.2017
Zwei AS Projekte zusammenführen Android App Entwicklung 20.12.2016
Implementieren der Methode nicht möglich Android App Entwicklung 20.12.2016
Du betrachtest das Thema "Zwei Methoden hintereinander ausführen?" im Forum "Android App Entwicklung",