Я только изучаю 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, и это кажется синтаксически неправильным. Я вызываю метод, а не присваиваю значение. Правильно? Нет? Я просто совершенно не прав?