Blackberry API / MenuItems

时间:2011-06-18 19:32:24

标签: java eclipse blackberry menuitem

我只是在学习blackbery API,尝试按照黑莓开发网站上的教程,我有点困惑。在界面教程中,他们提供了以下有关制作菜单项的说明......

private MenuItem _changeCapitol = new MenuItem("Change Capitol", 110, 10) 
{ 
    public void run() 
    { 
        if (displayed == 0) 
            _canadaCapitol = _input.getText(); 
        else if (displayed == 1) 
            _ukCapitol = _input.getText(); 
        else if (displayed == 2) 
            _usCapitol = _input.getText(); 
    } 
}; 

这就是所有的桃子,现在都有用。问题是不推荐使用用于创建MenuItem的方法。所有教程似乎都适用于4.0。我想学习以正确的方式这样做,所以我去了6.0 API参考。我试图将其转换为当前的方法,但我不能正确。这是我最接近的......

private MenuItem _changecapitol = new MenuItem(new StringProvider("Change Capitol"), 110, 10);
changecapitol.setCommand(new Command(CapitolChange()));
class CapitolChange extends CommandHandler
{
    public void execute(ReadOnlyCommandMetadata metadata, Object context)
    {
        if (displayed == 0) 
            _canadaCapitol = _input.getText(); 
        else if (displayed == 1) 
            _ukCapitol = _input.getText(); 
        else if (displayed == 2) 
            _usCapitol = _input.getText();
    }

}

似乎构造函数的括号内应该有一些东西,但我无法想象那可能是什么。如果我正确地理解了引用,那么功能就在CommandHandler中,所以我认为我有那个部分是正确的。现在的问题是Eclipse在CapitolChange构造函数之前抛出错误。

changecapitol.setCommand(new Command(CapitolChange()));

我实际上在这一行上遇到了多个错误。一个是错位的构造错误,另一个声称在“setCommand”之后我需要一个“=”。这在API中没有任何地方,它在语法上似乎是错误的。我正在调用一个方法而不是赋值。对?没有?我对整件事情完全错了吗?

2 个答案:

答案 0 :(得分:0)

您正在使用错误的变量,您使用“_changecapitol”创建MenuItem并将其与此changecapitol一起使用。纠正错字并检查错误。

答案 1 :(得分:0)

我认为编译错误是由于指定命令的位置不正确引起的:

changecapitol.setCommand(new Command(CapitolChange()));

因为它位于MenuItem成员声明之后的类声明部分的某处。 请尝试在别处分配命令,也许在屏幕构造器中。