Android
crashes bei .setText in Timer run
Problem:
Android stürzt ab, wenn man versucht mit .setText einen
Text in eine Anzeige Textview zu schrieben
Beschreibung:
Mit einem Timer soll jede Sekunde die aktuelle Uhrzeit
in eine Android Activity Textfeld zur Anzeige geschrieben werden
Timer
timerActualDayTime = new Timer();
timerActualDayTime.schedule(new TimerTask() {
@Override
public void run() {
String
sCurrentDateTime= new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
_textViewCurrentDayTime.setText(sCurrentDateTime);
}
}, 1000, 1000);
//textViewActualTime
|
An der gelben Stelle stürzt Android ab
Lösung:
Timer hat keinen
Zugriff auf die UI
Wenn man vom java Code in die Ausgabe (UI) schreiben
möchte, dann benötigt man höhere Rechte als ein Timer hat.
Hier muss man ein Handler nehmen.
Java Handler() ermöglichen den Zugriff auf andere
Stellen wie zum Beispiel die Aus- Eingabe UI
Lösung: Wechsel auf Handler()
Ok Solution
works
Lösungs
Code
TextView
_textViewCurrentDayTime;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//< init >
_textViewCurrentDayTime
= findViewById(R.id.textViewCurrentDayTime);
refreshCurrentDateTime();
//</ init >
}
//========< #region: Methods >========
private void refreshCurrentDateTime() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
String
sCurrentDateTime= new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
_textViewCurrentDayTime.setText(sCurrentDateTime);
//< loop: next
>
refreshCurrentDateTime();
//< loop: next
>
}
}, 1000);
}
//========</ #region: Methods >========
|