- Forum-Beiträge: 20
07.09.2011, 16:07:59 via Website
07.09.2011 16:07:59 via Website
ich habe ein View welches eine Art Progressbar darstellt.
Nun kann es vorkommen, dass diese von z. B. 70% auf 30% wechseln soll. Damit dies schöner aussieht, soll dies als Animation in einer gewissen Zeit laufen.
Dafür habe ich mit einem Timer gearbeitet. Dieser ruft dann die invalidate Methode auf.
Leider bekomme ich die Fehlermeldung: "Only the original thread that created a view hierachy can touch its views".
Dies kann ich auch nachvollziehen. Aber wie kann ich dies sauber an den Thread des Views übergeben?
Leider kenne ich nur die Lösung in C# (invoke & delegate).
Wenn ich dies folgendermaßen anstelle, bekomme ich den Fehler als TargetException einer InvocationTargetException.
2 {
3 Method method = this.getClass().getMethod("invalidate");
4 method.invoke(this);
5
6 }
7 catch(java.lang.reflect.InvocationTargetException e)
8 {
9 Log.e("Beim Refresh", e.getTargetException().toString());
10 }
11 catch(Exception e)
12 {
13 Log.e("Beim Refresh2", e.toString());
14 }
Ist diese Strategie, das Neuzeichnen durch invalidate(), die Richtige?
Ich arbeite mit Version 2.3.1. Die Klassen Animator etc. würden, falls geeignet, nicht zur Verfügung stehen.
Vielen Dank und Gruß
Tim