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...
Similar Threads Forum Datum
LG G4 VOR BOOTLOOP SCHÜTZEN! Indem man die zwei Big Cores abschaltet od. auf kleinere Frequn..bringt Root / Custom-ROMs / Modding für LG G4 01.04.2017
Zwei Google Kalender verknüpfen (aber nur bestimmte Termine) Kalender 02.04.2017
Suche: Datentransfer zwischen zwei Servern steuern Tools 10.04.2017
Keine ausführlichen Testberichte? Android Boxen (Full Android) Allgemein 19.04.2017
Neues Axon 7 und zwei Fragen... ZTE Axon 7 Forum 06.05.2017
Samsung Aktion Eins Kaufen Zwei Angeln hat da jemand mitgemacht? Samsung Galaxy A5 2017 (A520F) Forum 09.05.2017
Bereich um die Kamera wird warm bei mehreren Fotos hintereinander. Honor 8 Forum 12.05.2017
Samsung Galaxy S8 - Gleiche Bilder auf zwei Geräten Samsung Galaxy S8 / S8+ (G950F/G955F) Forum 20.05.2017
Gewinnspiel: Gewinnt eins von zwei hochwertigen Zubehör-Paketen Geräteunabhängiges (Android) Zubehör Donnerstag um 18:21 Uhr
Gewinnspiel: Gewinnt eins von zwei hochwertigen Zubehör-Paketen Android News Donnerstag um 18:21 Uhr