W
Wimme
Gast
Hi ihr!
Ich mache gerade meine ersten Schritte in der Android Entwicklung. Leider tritt in im Verhalten meines Apps jetzt etwas unerwartetes auf, so dass ich einmal hier nachfragen möchte.
Im Prinzip habe ich 2 Buttons "start" und "stop" und TextView. Wenn der "start" Button gedrückt wird, soll ein Thread gestartet werden, der seine Arbeit verrichtet und auch ab und an das TextView setzen muss. Wenn der "stop" button gedrückt wird, soll der Thread beendet werden.
Da man die GUI ja nur im UIThread verändern darf, habe ich das ganze jetzt so aufgebaut:
sowie:
Fragen:
1. Wieso wird "started" von Zeile 16 erster Code nicht ausgegeben?
2. Wenn ich jetzt eine Funktion für "stop" erstelle, wie beeinde ich dann am besten "DerThread"?
Ich hoffe ihr könnt mir helfen
Wimme
Ich mache gerade meine ersten Schritte in der Android Entwicklung. Leider tritt in im Verhalten meines Apps jetzt etwas unerwartetes auf, so dass ich einmal hier nachfragen möchte.
Im Prinzip habe ich 2 Buttons "start" und "stop" und TextView. Wenn der "start" Button gedrückt wird, soll ein Thread gestartet werden, der seine Arbeit verrichtet und auch ab und an das TextView setzen muss. Wenn der "stop" button gedrückt wird, soll der Thread beendet werden.
Da man die GUI ja nur im UIThread verändern darf, habe ich das ganze jetzt so aufgebaut:
Java:
public class MainActivity extends Activity {
Acitivity ich = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ich = this;
}
....
/* Called when the user clicks the start button */
public void start(View view){
....
DerThread t = new DerThread(p1, p2, .., ich);
new Thread(t).start();
output.setText("started!"); //output ist das TextView, auf das vorher natürlich zugegriffen wurde
}
sowie:
Java:
public class DerThread implements Runnable {
private .. p1;
private .. p2;
...
private Activity m;
DerThread(.. p1,.. p2, ..., Activity ma){
...
m= ma;
}
public void run (){
m.runOnUiThread(new UIThread());
}
private class UIThread implements Runnable {
public void run (){
TextView output = (TextView) m.findViewById(R.id.text_out);
output.setText("test");
}
}
}
Fragen:
1. Wieso wird "started" von Zeile 16 erster Code nicht ausgegeben?
2. Wenn ich jetzt eine Funktion für "stop" erstelle, wie beeinde ich dann am besten "DerThread"?
Ich hoffe ihr könnt mir helfen
Wimme