Вниз  Java-программирование (1-ые посты)
- 14.02.2014 / 18:38
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Совсем забыл, как в Java ME в методе, возвращающем String вызвать другой экран, прочитать оттуда текст и передать в return?

  1. String read() {
  2.   display.setCurrent(textBox);
  3.   /*магия */
  4.   return textBox.getString();
  5. }

__________________
 let live

Изменено aNNiMON (14.02 / 18:38) (всего 1 раз)
- 14.02.2014 / 18:40
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
aNNiMON, поподробней: что за текст и в каком экране?
- 14.02.2014 / 18:42
Oak
  Пользователь

Oak 
Сейчас: Offline
aNNiMON, не с помощью CommandListener-а?
__________________
 Эль Презеденте
- 14.02.2014 / 18:45
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Oak, да, он тут тоже при делах.
  1. public void commandAction(Command cmd, Displayable displ) {
  2.     if (displ == textBox && cmd == CMD_OK) {
  3.         // #1. тут надо как-то оповестить, что ввод окончен
  4.     }
  5. }
  6.  
  7. public String read() {
  8.     display.setCurrent(textBox);
  9.     // тут надо оповестить прогу, чтоб подождала, пока не выполнится #1
  10.     return textBox.getString();
  11. }

__________________
 let live
- 14.02.2014 / 18:48
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
А, всё, вроде ж wait/notify для этого есть.
__________________
 let live
- 14.02.2014 / 18:48
Oak
  Пользователь

Oak 
Сейчас: Offline
aNNiMON, быдлокод какой-то, зачем так делать, если есть Listener-ы.
Но можно использовать булеву переменную:
  1. public void commandAction(Command cmd, Displayable displ) {
  2.     if (displ == textBox && cmd == CMD_OK) {
  3.     onceUsedNeverRemebered = true;
  4.     }
  5. }
  6.  
  7. public String read() {
  8.     display.setCurrent(textBox);
  9.     onceUsedNeverRemebered = false;
  10.     while(!onceUsedNeverRemebered){
  11.     //Thread.sleep(100);
  12.     }
  13.     return textBox.getString();
  14. }

__________________
 Эль Презеденте

Изменено Oak (14.02 / 18:49) (всего 2 раза)
- 14.02.2014 / 18:50
Virus-ON
  Пользователь

Virus-ON 
Сейчас: Offline
Oak, Вот такой код я люблю. Без всяких там a,b,c...
- 14.02.2014 / 18:52
Oak
  Пользователь

Oak 
Сейчас: Offline
Virus-ON, ну так и пиши такой ;)
__________________
 Эль Презеденте
- 14.02.2014 / 18:54
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
В 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
  Супервизор

aNNiMON 
Сейчас: Offline
Oak, зачем кучу листенеров создавать и ставить на паузу UI-поток, если есть красивое решение.
  1. public void commandAction(Command cmd, Displayable displ) {
  2.     if (displ == textBox && cmd == CMD_OK) {
  3.         display.setCurrent(form);
  4.         synchronized (this) {
  5.             notify();
  6.         }
  7.     }
  8. }
  9.  
  10. public String read() {
  11.     display.setCurrent(textBox);
  12.     synchronized (this) {
  13.         try {
  14.             wait();
  15.         } catch (InterruptedException ex) {
  16.             ex.printStackTrace();
  17.         }
  18.     }
  19.     return textBox.getString();
  20. }

__________________
 let live
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)