Ich verstehe das Verhalten meines Codes nicht. Zusammenfassend habe ich einen editText (variable Stunden in meinem Code), der mit "00" beginnt. Ich erstelle einen Thread, der verhindert, dass dieser editText 2-stellig ist. Nehmen wir an, dass dieser editText nicht mehr als 2 Ziffern haben darf. Was ich mache ist, dass ich einen Thread erstelle. In diesem Thread, wenn dieser editText nicht 2 Ziffern (also 1 Ziffer) hat, füge ich ihm eine "0" hinzu.runOnUiThread() und Endlosschleife auf Android
Wenn ich jedoch nur eine Ziffer auf den editText setze, wird es verrückt und geht in eine Endlosschleife und andere Sachen, die ich nicht verstehe. Hier ist mein Code:
Thread digitLessThanTwoThread;
EditText hours = (EditText) findViewById(R.id.hours);
digitLessThanTwoThread= new Thread(){
@Override
public void run()
{
while(true) {
if (hours.getText().toString().length() != 2 && !hours.isFocused()) {
main_activity.runOnUiThread(new Runnable() {
@Override
public void run() {
hours.setText("0" + hours.getText().toString());
}
});
}
}
}
};
digitLessThanTwoThread.start();
Darüber hinaus, am Ende, Die editText Stunden angezeigt "00". Ich bekomme auch eine Nachricht "suspending alle Threads dauerte: XXX Sekunden", bevor Sie tatsächlich etwas tun!
Sie können Verbesserungen der Lebensqualität sehen, wenn Sie nie wieder while (true) eingeben – drelliot