Blackberry API / MenuItems - PullRequest
       18

Blackberry API / MenuItems

0 голосов
/ 18 июня 2011

Я только изучаю API BlackBery, пытаюсь следовать инструкциям на сайте разработчиков Blackberry, и я немного растерялся. В руководстве по интерфейсу они дают следующую инструкцию для создания пунктов меню ...

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 Reference. Я пытался преобразовать это в текущий метод, но я не могу сделать это совершенно правильно. Вот самое близкое, что я пришел ...

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 голосов
/ 20 июня 2011

Я думаю, что ошибка компиляции вызвана неправильным местом назначения команды:

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

, поскольку она находится где-то в части объявления класса сразу после объявления члена MenuItem.Пожалуйста, попробуйте назначить команду в другом месте, возможно, в конструкторе экрана.

0 голосов
/ 19 июня 2011

Вы используете неправильную переменную, вы создаете MenuItem с "_changecapitol" и используете его с этим changecapitol. исправьте опечатку и проверьте ошибки.

...