Я создаю приложение Bluetooth.
Я создал простой мидлет с командой выхода и создаю поток для поиска службы и обнаружения устройства. При этом он отображает анимированный экран, на котором я добавил родительский commandListener для команды выхода. После успешного подключения оба пользователя представлены приветствиями (текущий экран вызывает родительский метод Display setCurrent для отображения самого себя). На этом экране также есть CommandListener, установленный на родительский. Теперь я хочу добавить еще несколько команд. Я реализовал интерфейс CommandLIstener в этом классе, добавил несколько команд, но команды не работают. Я не знаю что не так. Я даю вам фрагменты кода, чтобы полностью описать мою проблему:
package name
Imports here
public class MyMidlet extends MIDlet implements
CommandListener {
public CommandListener theListener;
public Display theDisplay;
public Command exitCommand;
public MyMidlet() {
// Retrieve the display for this MIDlet
//Create the initial screen
}
public void startApp() throws MIDletStateChangeException {
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
// Determine if the exit command was selected
if (c == exitCommand) {
//End application here
notifyDestroyed();
} else {
//Start the new thread here
}
}
}
Теперь вот код для класса, который вызывается вышеприведенным мидлетом в отдельном потоке;
package here;
imports here
public class MyService implements Runnable, CommandListener {
private MyMidlet parent;
private StreamConnection conn;
private OutputStream output;
private InputStream input;
public Command sendCommand;
private TextField messageToSend
Form form;
public BChatService(boolean isServer, BChatMidlet parent) {
//some stuff here
this.parent = parent;
}
public void run() {
//function for showing animation here
try {
input = conn.openInputStream();
output = conn.openOutputStream();
} catch (IOException e) {
displayError("IO Error",
"An error occurred while opening " +
"the input and output streams" +
"(IOException: " + e.getMessage() + ")");
try {
conn.close();
} catch (Exception ex) {
}
return;
}
// Create the Form here when service is discoverd and greets the users
Command sendCommand = new Command("Send", Command.ITEM, 2);
exitCommand = new Command("Exit", Command.EXIT, 1);
form.addCommand(exitCommand);
form.addCommand(sendCommand);
parent.theDisplay.setCurrent(form);
form.setCommandListener(this);
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
// End the game
parent.destroyApp(true);
parent.notifyDestroyed();
}
if(c == sendCommand) {
form.append("SOme text here");
}
}
}
Когда я выбираю команду «Отправить», строка не добавляется в форму и команда выхода не работает.
Что может быть причиной этого?
Мне нужно реализовать эту функциональность ... Есть ли другой способ добиться этого?