2016-09-24 41 views
1

当按下菜单项时我想设置标签的文本,但是我收到错误:“调用<符号>失败”和“意外类型错误”。使用setText连接IQ意外类型错误

在我的菜单我的代表有:

using Toybox.WatchUi as Ui; 
using Toybox.System as Sys; 
using Toybox.Position as Position; 

class DiscGolfMenuDelegate extends Ui.MenuInputDelegate { 

    var _view; 

    function initialize() { 
     MenuInputDelegate.initialize(); 
     _view = new DiscGolfView(); 
    } 

    function onMenuItem(item) { 
     if (item == :measure_throw) { 
      Sys.println("item 1"); 
      _view.setLongestThrow("yeet"); 
     } else if (item == :start_game) { 
      Sys.println("item 2"); 
     } 
    } 

} 

的setLongestThrowFunction位于我的视图类,看起来像:

function setLongestThrow(msg) { 
    longest_throw_label.setText(msg); 
} 

它没有意义,为什么我会得到意想不到的输入错误,因为我通过一个字符串。任何人都看到我不喜欢的东西?谢谢。

+0

尝试使用'''longest_throw_label.setText(msg.toString())'''我知道它看起来很愚蠢,它没有任何意义,但它可以提供帮助。 – 2016-11-10 08:49:05

+0

'调用'失败'可能意味着您试图对空对象调用方法,或者您的变量不是您认为的类型。在不同的行上打印msg的值和'_view'的值,看看它们是什么(它们应该像'Obj:51')或哪一行崩溃。这可能会回答你的问题。 – Aderis

回答

1

我认为问题不在于_view或字符串传递给setText,而是longest_throw_label

问题很可能是您在菜单构造函数中初始化了_view,但该视图尚未布置(系统尚未调用_view.onLayout(dc),因为该视图未被推送)。