[android] For Schleife bis Button gedrückt wird Pausieren.

staromir

Grünschnabel
Hallo

Ich möchte gerne, wie im Titel schon beschrieben, eine Forschleife solang Pausieren, bis ein Button gedrückt wird. Ich weiss jedoch nicht wie ich das bewerktstelligen soll.
Continue loop und break loop funktioniert nicht, da ich den button via onClickListener abfange.

Mal kurz mein Code bis jetzt:
Code:
abfrage(HashMap voci)
{

     for (Entry<String, String> entry : voci.entrySet()) {
				           		    String key = entry.getKey();
				           		    
				           		  currentWord=key;
				           		  tv.setText(currentWord);
				           	while(pressed!=true)
				           	{
				           	//Programm hier "Pausieren" bis button gedrückt wurde.
				           	}
				           		 
				           		pressed=false;
				          }

}

@Override
	public void onClick(View v) 
	{
		       pressed=true;
	 }



Da die abfrage-Methode mit einem TextView arbeitet, ist mein Versuch, das ganze in einen Thread zu setzen gescheitert. Der versuch den Thread als runOnUiThread(new Runnable() {/*Abfrage Code*/} zu "starten" funktioniet ebenfalls nicht ( Activity friert ein).


Ich hoffe, ich konnte mich verständlich ausdrücken und würde mich sehr freuen, wenn ihr mir helfen könntet.
Vielleicht sehe ich ja auch den Wald vor lauter Bäumen nicht :( :D

MFG Staromir
 
Du brauchst einen Handler, der im Mainthread auf die UI zugreift und vom Thread benachrichtigt wird, das zu tun.
 
Vielen Dank für die schnelle Hilfe Navy, hat super funktioniert!

Hab mein Programm nun so umgeschrieben:

Code:
  private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
		
			tv.setText(currentWord);
		}
	};



class thread extends Thread {
      

        public void run() {
            for (Entry<String, String> entry : voci.entrySet()) {
       		    String key = entry.getKey();
       		    
       		  currentWord=key;
       		handler.sendEmptyMessage(0);
       	while(pressed!=true)
       	{
       		try {
				sleep(200);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
       	}
       		 
       		pressed=false;
       		}
        }
    }
 
Zurück