14.02.2014 / 18:38 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Совсем забыл, как в Java ME в методе, возвращающем String вызвать другой экран, прочитать оттуда текст и передать в return? String read() {
display.setCurrent(textBox);
/*магия */
return textBox.getString();
}
__________________
let live Изменено aNNiMON (14.02 / 18:38) (всего 1 раз) |
14.02.2014 / 18:40 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| aNNiMON, поподробней: что за текст и в каком экране?
|
14.02.2014 / 18:42 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| aNNiMON, не с помощью CommandListener-а?
__________________
Эль Презеденте |
14.02.2014 / 18:45 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Oak, да, он тут тоже при делах. public void commandAction(Command cmd, Displayable displ) {
if (displ == textBox && cmd == CMD_OK) {
// #1. тут надо как-то оповестить, что ввод окончен
}
}
public String read() {
display.setCurrent(textBox);
// тут надо оповестить прогу, чтоб подождала, пока не выполнится #1
return textBox.getString();
}
__________________
let live |
14.02.2014 / 18:48 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| А, всё, вроде ж wait/notify для этого есть.
__________________
let live |
14.02.2014 / 18:48 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| aNNiMON, быдлокод какой-то, зачем так делать, если есть Listener-ы. Но можно использовать булеву переменную: public void commandAction(Command cmd, Displayable displ) {
if (displ == textBox && cmd == CMD_OK) {
onceUsedNeverRemebered = true;
}
}
public String read() {
display.setCurrent(textBox);
onceUsedNeverRemebered = false;
while(!onceUsedNeverRemebered){
//Thread.sleep(100);
}
return textBox.getString();
}
__________________
Эль Презеденте Изменено Oak (14.02 / 18:49) (всего 2 раза) |
14.02.2014 / 18:50 | |
Virus-ON Пользователь Сейчас: Offline
Имя: Макс Откуда: Чернигов Регистрация: 13.10.2011
| Oak, Вот такой код я люблю. Без всяких там a,b,c...
|
14.02.2014 / 18:52 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Virus-ON, ну так и пиши такой __________________
Эль Презеденте |
14.02.2014 / 18:54 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| В j2me введенный в текстовое поле или бокс можно получить в любой момент, событие, происходящее при потере фокуса или фокусировке на любом элементе связано с методом itemStateChanged(Item item) ,который надо переопределить. http://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/ Изменено samodelkin (14.02 / 18:59) (всего 2 раза) |
14.02.2014 / 19:01 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Oak, зачем кучу листенеров создавать и ставить на паузу UI-поток, если есть красивое решение. public void commandAction(Command cmd, Displayable displ) {
if (displ == textBox && cmd == CMD_OK) {
display.setCurrent(form);
synchronized (this) {
notify();
}
}
}
public String read() {
display.setCurrent(textBox);
synchronized (this) {
try {
wait();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
return textBox.getString();
}
__________________
let live |