Unabled to build Datafield application with following code:
ERROR: edge1040: E:\0_development\projects\ConnectIQWorkspace\TestApps\Uninitialized\source\UninitializedView.mc:59,10: Value may not be initialized.
<iq:application id="1473ee47-9574-4c1a-8b9f-b919801ea5b3" type="datafield" name="@Strings.AppName" entry="UninitializedApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="4.2.0">
product id="edge1040"
connect iq 6.2.1
java 1.8.0_371
windows
Edition Windows 10 Pro
Version 22H2
Installed on 09/07/2020
OS build 19045.3155
Experience Windows Feature Experience Pack 1000.19041.1000.0
Version 22H2
Installed on 09/07/2020
OS build 19045.3155
Experience Windows Feature Experience Pack 1000.19041.1000.0
-------------
import Toybox.Activity;
import Toybox.Lang;
import Toybox.Time;
import Toybox.WatchUi;
class UninitializedView extends WatchUi.SimpleDataField {
hidden var _keyCoord as Lang.Array<Lang.Array<Lang.Number> > =
[[]] as Lang.Array<Lang.Array<Lang.Number> >;
hidden var _controlCoord as Lang.Array<Lang.Array<Lang.Number> > =
[[]] as Lang.Array<Lang.Array<Lang.Number> >;
hidden var _keys as Array<String> =
["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] as Array<String>;
hidden var _controls as Array<String> =
["<", "BCK", "DEL", ">", "INS", "CLR", "OK"] as Array<String>;
// Set the label of the data field here.
function initialize() {
SimpleDataField.initialize();
label = "My Label";
}
// The given info object contains all the current workout
// information. Calculate a value and return it in this method.
// Note that compute() and onUpdate() are asynchronous, and there is no
// guarantee that compute() will be called before onUpdate().
function compute(info as Activity.Info) as Numeric or Duration or String or Null {
// See Activity.Info in the documentation for available information.
return 0.0;
}
function getKeyPressed_ERROR(coord as Lang.Array<Lang.Number>) as String {
var x = coord[0] as Number;
var y = coord[1] as Number;
try {
for (var idxKey = 0; idxKey < _keyCoord.size(); idxKey++) {
var range = _keyCoord[idxKey] as Lang.Array<Lang.Number>;
if (
(range[0] as Number) < x &&
x < (range[1] as Number) &&
(range[2] as Number) < y &&
y < range[3]
) {
return _keys[idxKey] as String;
}
}
for (var idxCtrl = 0; idxCtrl < _controlCoord.size(); idxCtrl++) {
var range = _controlCoord[idxCtrl] as Lang.Array<Lang.Number>;
if (
(range[0] as Number) < x &&
x < (range[1] as Number) &&
(range[2] as Number) < y &&
y < (range[3] as Number)
) {
return _controls[idxCtrl] as String; // <-- ERROR: edge1040: E:\0_development\projects\ConnectIQWorkspace\TestApps\Uninitialized\source\UninitializedView.mc:57,10: Value may not be initialized.
}
}
} catch (ex) {
ex.printStackTrace();
}
return "";
}
function getKeyPressed_OK2(coord as Lang.Array<Lang.Number>) as String {
var x = coord[0] as Number;
var y = coord[1] as Number;
try {
// for (var idxKey = 0; idxKey < _keyCoord.size(); idxKey++) {
// var range = _keyCoord[idxKey] as Lang.Array<Lang.Number>;
// if (
// (range[0] as Number) < x &&
// x < (range[1] as Number) &&
// (range[2] as Number) < y &&
// y < range[3]
// ) {
// return _keys[idxKey] as String;
// }
// }
for (var idxCtrl = 0; idxCtrl < _controlCoord.size(); idxCtrl++) {
var range = _controlCoord[idxCtrl] as Lang.Array<Lang.Number>;
if (
(range[0] as Number) < x &&
x < (range[1] as Number) &&
(range[2] as Number) < y &&
y < (range[3] as Number)
) {
return _controls[idxCtrl] as String; // <-- ERROR: edge1040: E:\0_development\projects\ConnectIQWorkspace\TestApps\Uninitialized\source\UninitializedView.mc:57,10: Value may not be initialized.
}
}
} catch (ex) {
ex.printStackTrace();
}
return "";
}
function getKeyPressed_OK(coord as Lang.Array<Lang.Number>) as String {
var x = coord[0] as Number;
var y = coord[1] as Number;
try {
for (var idxKey = 0; idxKey < _keyCoord.size(); idxKey++) {
var range = _keyCoord[idxKey] as Lang.Array<Lang.Number>;
if (
(range[0] as Number) < x &&
x < (range[1] as Number) &&
(range[2] as Number) < y &&
y < range[3]
) {
return _keys[idxKey] as String;
}
}
} catch (ex) {
ex.printStackTrace();
}
try{
for (var idxCtrl = 0; idxCtrl < _controlCoord.size(); idxCtrl++) {
var range = _controlCoord[idxCtrl] as Lang.Array<Lang.Number>;
if (
(range[0] as Number) < x &&
x < (range[1] as Number) &&
(range[2] as Number) < y &&
y < (range[3] as Number)
) {
return _controls[idxCtrl] as String; // <-- ERROR: edge1040: E:\0_development\projects\ConnectIQWorkspace\TestApps\Uninitialized\source\UninitializedView.mc:57,10: Value may not be initialized.
}
}
} catch (ex) {
ex.printStackTrace();
}
return "";
}
}