import Toybox.Graphics;
import Toybox.Lang;
import Toybox.Timer;
import Toybox.WatchUi;
(:glance)
class FooGlanceView extends WatchUi.GlanceView {
private var mTimer as Timer.Timer?;
public function onShow() as Void {
mTimer = new Timer.Timer();
mTimer.start(method(:timerCallback), 1000, true);
}
public function onHide() as Void {
log("g.onHide");
if (mTimer != null) {
mTimer.stop();
mTimer = null;
}
}
hidden function timerCallback() as Void {
WatchUi.requestUpdate();
}
public function onUpdate(dc as Dc) as Void {
// Call the parent onUpdate function to redraw the layout
View.onUpdate(dc);
var text = "whatever";
var width = dc.getWidth();
var height = dc.getHeight();
var font = Graphics.FONT_XTINY;
var justification = Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER;
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_BLACK);
dc.clear();
dc.drawText(width/2, height/2, font, text, justification);
}
}
The above code gives the following error:
Error: Symbol Not Found Error
Details: Failed invoking <symbol>
Stack:
Encountered app crash.
Note: there's no actual stack.
I found out that the reason is that the callback for timer is private. IMHO this is a bug, 'cause it is known at the place where it is used (mTimer.start(method(:timerCallback), 1000, true);), so the reference should be known later when the timer want s to use it.
SDK: 4.1.4
-
_psx_
-
Cancel
-
Vote Up
0
Vote Down
-
-
More
-
Cancel
Comment-
_psx_
-
Cancel
-
Vote Up
0
Vote Down
-
-
More
-
Cancel
Children