Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Alert! Можно ли фиксировать переключение


Автор: Lisus 24.10.2008, 08:22
Что мне не нравиться в самом Alert.

1) нельзя совмещать команды и таймер.
Например нужен алерт, который "закроется" не от таймера, а от другого события.
следовательно на таймер ставить нельзя, но и без таймера появляется пративная комманда.
Иногда наоборот нужен и таймер, и команда (чтобы долго не ждать).

2) нужно фиксировать смену экранов.
например фиксировать момент, когда пользователь кнопку нажимает и Alert заменяется другим экраном.
Другие экраны я переключаю сам, поэтому есть возможность совмещать этот момент с некоторыми обработками и событиями. С алерт врядли такое пройдёт.

Собственно 1) и 2) - это вопросы.

Автор: eugine_s 24.10.2008, 08:25
Как на счет написать свой Alert? или расширить (унаследовать) и переопределить методы (если возможно) в Alert-е? 

Автор: Lisus 24.10.2008, 08:43
На сколько я понимаю сам алерт ничего не делает,  все операции выпоняет какой-то там менеджер, поэтому переопределить алерт можно, но зачем.

Когда-то я вообще не юзал компоненты графики, типа Form, Alert.... мне и канваса на все случаи хватало.
Однако, сейчас по красоте теже Алерт делаются очень и очень красиво. А главное стильно. Не хочется вставляется свой капот от жигуля на основу БМВ, не хочется нарушать стиль, и тем более его портить. Это ответ на вопрос о собственном написании Алерта.

Автор: eugine_s 24.10.2008, 13:14
Цитата(Lisus @  24.10.2008,  08:43 Найти цитируемый пост)
На сколько я понимаю сам алерт ничего не делает,  все операции выпоняет какой-то там менеджер, поэтому переопределить алерт можно, но зачем.


Может стоит узнать точно, кто что делает? 

Зачем переопределять? Чтобы добавить свой  функционал (расширить функционал) или заменить функционал.

Я не понимаю суть твоих вопросов: тебе не нравится что Alert так работает(как описано в доке), но расширять или изменить его возможности ты не хочешь. В чем суть вопроса? 

Цитата

1) нельзя совмещать команды и таймер.

Нельзя. Возьми и добавь свою функциональность: Alert будет работать с командами, а твоя расширенная функиональность будешь следить за временем, и когда это время закончиться, то сам закроет твоя расширенная функциональность.
Так же можно добавить срабатывания не только он таймера, а от другого события. Тоже не вижу никаких проблем.

Цитата(Lisus @  24.10.2008,  08:22 Найти цитируемый пост)
2) нужно фиксировать смену экранов.

Тут тоже не вижу никаких проблем.
нажатие кнопки вызывается событие в CommandListener....


Или я чего-то не так понимаю? 

Автор: Lisus 24.10.2008, 18:00
По просьбе трудящихся.


Цитата(eugine_s @  24.10.2008,  13:14 Найти цитируемый пост)
Зачем переопределять? Чтобы добавить свой  функционал (расширить функционал) или заменить функционал.

Я так понимаю, что переопределять, значит наследовать.


Цитата(eugine_s @  24.10.2008,  13:14 Найти цитируемый пост)
Я не понимаю суть твоих вопросов: тебе не нравится что Alert так работает(как описано в доке), но расширять или изменить его возможности ты не хочешь. В чем суть вопроса?


Я хочу расширить возможности (точнее заменить). Но не могу. Алерт не поддерживают команды, плюс нет доступа к механизму смены. Если Вы знаете как добиться расширения, приведите пример.

 

Цитата(eugine_s @  24.10.2008,  13:14 Найти цитируемый пост)
будешь следить за временем, и когда это время закончиться, то сам закроет твоя расширенная функциональность.

До этого я и сам додумался.


СТОП,,,
Е.Буткевич типа писал, что для Алерта добавления комманды и установление слушателя выдаёт 
IllegelStateException. Врал выходит. Если так, то это совсем иное дело. Тогда вопроса нет.

Автор: John2 18.11.2009, 19:36
Цитата(Lisus @  24.10.2008,  18:00 Найти цитируемый пост)
СТОП,,,
Е.Буткевич типа писал, что для Алерта добавления комманды и установление слушателя выдаёт 
IllegelStateException. Врал выходит. Если так, то это совсем иное дело. Тогда вопроса нет.


А может Буткевич и не врал. Пожалуйста, помогите разобраться!

Программа с таким кодом в эмуляторе работает нормально
Код

alert.addCommand( back );
alert.setCommandListener( this );

А в настоящем телефоне Nokia 3100 (MIDP 1.0, CLDC 1.0) после добавления команды выдаёт:  java/lang/IllegelStateException
Может, потому что старая модель?
Просто проверить на новом телефоне пока не могу.

Автор: eugine_s 18.11.2009, 20:18
Цитата(John2 @  18.11.2009,  19:36 Найти цитируемый пост)
А в настоящем телефоне Nokia 3100 (MIDP 1.0, CLDC 1.0) после добавления команды выдаёт:  java/lang/IllegelStateException


MIDP 1.0, Alert
Код

public void addCommand(Command cmd)
Throws:
IllegalStateException - always


MIDP 2.0, Alert
Код

public void addCommand(Command cmd)
Throws:
NullPointerException - if cmd is null


Вывод, на MIDP 1.0 исключение (IllegalStateException) будет всегда вываливаться, на MIDP2.0 возможно только NullPointerException при условии что добавляемая команда = null

Автор: John2 18.11.2009, 23:53
Цитата(eugine_s @  18.11.2009,  20:18 Найти цитируемый пост)
Вывод, на MIDP 1.0 исключение (IllegalStateException) будет всегда вываливаться, на MIDP2.0 возможно только NullPointerException при условии что добавляемая команда = null 


eugine_s, спасибо за помощь!
В поставляемом WTK2.5.2_01 документация, как я понял в основном по MIDP 2.0, хотя есть сноски и на MIDP 1.0. Как быть в подобных случаях? Может кто подскажет документацию для сравнения профилей?

Автор: eugine_s 19.11.2009, 14:42
У меня стоит WTK от SE, там при установке можно выбрать WTK1 и/или WTK2 ставить. Если установишь оба, тогда будет отдельно документация по midp 1.0 и 2.0

Но, зачем тебе 1.0? Только для совместимости с твоим телефоном? 

Автор: John2 20.11.2009, 21:57
Цитата(eugine_s @  19.11.2009,  14:42 Найти цитируемый пост)

Но, зачем тебе 1.0? Только для совместимости с твоим телефоном?

Да в основном для этого, кроме того это возможность протестировать программу на разных телефонах.
Ещё раз спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)