Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не прорисовывается экран после паузы. 
:(
    Опции темы
hTonus
Дата 30.3.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Привет всем!

Вознискла проблема, а своего умишка решить ее не хватает!  smile 

Телефон SonyEricsson T610. Пишу приложение в котором графическое меню. При нажатии на клавишу BACK - выскакивает аппаратное текстовое окно в котором спрашивается действительно ли я хочу выйти из приложения - жму НЕТ, управление возвращается в приложение, но экран не прорисовывается. Как можно этот момент отследить и принудительно перерисовать менюху? Подскажите пожалста!
PM MAIL   Вверх
Gameout
  Дата 31.3.2007, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.2.2007
Где: Интернет

Репутация: нет
Всего: нет



Попробуй repaint(), после этой функции должно перерисоваться!
PM MAIL   Вверх
hTonus
Дата 31.3.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Да эт понятна, можно и serviceRepaints() вызвать, вот только откуда? куда возвращается управление после такого прерывания? Та область что была под окошком сообщения не перерисовывается,  но если продолжить навигацию по меню, то элементы которые выбираю высвечиваются... т.е. я так и остался в этом классе. Но как отловить это событие хз...

Добавлено через 10 минут и 13 секунд
Блин я тормоз, пока писал предыдущее сообщение, понял где ошибка smile Дело в том что для ускорения прорисовки графики я перерисовывал в paint() только те области, которые требуется... ну и не отработал общий случай. Но вопрос все равно остается:

Как можно внутри приложения обнаружить что подобное событие имело место?
PM MAIL   Вверх
W0LF
Дата 31.3.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Незнаю, правильно ли я понял - 
Код

public class ScreenManager extends Stack {
    private static ScreenManager sManager = null;

    private ScreenManager() {

    }

    public static synchronized ScreenManager getInstance() {
        if (sManager == null) {
            sManager = new ScreenManager();
        }
        return sManager;
    }

    public void pushScreen(Displayable disp) {
        super.push(disp);
        Main.setDisplay(disp);
    }

    public void replaceScreen(Displayable disp) {
        super.pop();
        super.push(disp);
        Main.setDisplay(disp);
    }

    public void popScreen(int count) {
        Displayable disp = null;
        for (int i = 0; i < count; i++) {
            super.pop();
            if (super.empty()) {
                Main.getInstance().notifyDestroyed();
            } else {
                disp = (Displayable) super.peek();
            }
        }
        if (disp != null) {
            Main.setDisplay(disp);
        }
    }

    public void popScreen() {
        popScreen(1);
    }

}

public class MainMenu extends Canvas {

    private class MainMenu2 extends Canvas {
        public MainMenu2() {
            setFullScreenMode(true);
        }

        public void paint(Graphics g) {
            g.setColor(0x008000);
            g.fillRect(80, 50, 100, 120);
            g.setColor(0xFFFFFF);
            g.drawString("Quit?", 90, 60, Graphics.TOP | Graphics.LEFT);
            g.drawString("Yes", 90, 150, Graphics.TOP | Graphics.LEFT);
            g.drawString("No", 160, 150, Graphics.TOP | Graphics.LEFT);
        }

        protected void keyPressed(int i) {
            switch (i) {
                //for MIDP20, Nokia, SonyEricsson : left soft key
                case -6 :
                    //Destriy app
                    break;
                    //for MIDP20, Nokia, SonyEricsson : right soft key
                case -7 :
                    //changing display
                    ScreenManager.getInstance().popScreen();
                    break;
            }
        }

    }

    public MainMenu() {
        setFullScreenMode(true);
    }

    public void paint(Graphics g) {
        g.setColor(0);
        g.fillRect(0, 0, 240, 320);
        g.setColor(0xFFFFFF);
        g.drawString("Quit", 10, 280, Graphics.TOP | Graphics.LEFT);
    }

    protected void keyPressed(int i) {
        switch (i) {
            //for MIDP20, Nokia, SonyEricsson : left soft key
            case -6 :
                MainMenu2 mm2 = new MainMenu2();
                //changing display
                ScreenManager.getInstance().pushScreen(mm2);
                break;
        }
    }

}



--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
javastic
Дата 1.4.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



hTonus, смотри в сторону pauseApp()


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
hTonus
Дата 1.4.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



WOLF: это все здорово но я пишу под MIDP 1.0...

javastic: да я смотрел на эту хрень, но так и не понял с чем ее едят... просветишь?

Это сообщение отредактировал(а) hTonus - 1.4.2007, 14:46
PM MAIL   Вверх
W0LF
Дата 1.4.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата(hTonus @  1.4.2007,  14:46 Найти цитируемый пост)
WOLF: это все здорово но я пишу под MIDP 1.0...

Чет я не понял.. а что из того что я написал под первый мидп не пойдет?


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
javastic
Дата 1.4.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



hTonus, с тем что когда у тебя какой-то внешний фактор, то твой мидлет находится в режиме ожидание и срабатывает метод pauseApp там можно поставить какую-либо логику.
Еще поиграйся с методами
resumeRequest()  и notifyPaused() 

просто пропиши в них вывод текста и сам всё увидишь, а как сделать репайнт потом сам поёмешь.



--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
hTonus
Дата 1.4.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Цитата(W0LF @ 1.4.2007,  14:57)
Цитата(hTonus @  1.4.2007,  14:46 Найти цитируемый пост)
WOLF: это все здорово но я пишу под MIDP 1.0...

Чет я не понял.. а что из того что я написал под первый мидп не пойдет?

Прости не разобрался, пойдет канечно, но эт несколько не то что мне нужно, точнее совсем не то...
----------------------------------------------------------------------------------------------
Добавлено @ 16:34
Цитата(javastic @ 1.4.2007,  16:04)
hTonus, с тем что когда у тебя какой-то внешний фактор, то твой мидлет находится в режиме ожидание и срабатывает метод pauseApp там можно поставить какую-либо логику.
Еще поиграйся с методами
resumeRequest()  и notifyPaused() 

просто пропиши в них вывод текста и сам всё увидишь, а как сделать репайнт потом сам поёмешь.

И то верно, попробую спасиб!

Еще фенечку обнаружил: 

DataInputStream.reset () - В SonyEricsson T610 нет такого метода. Пока отловил упарился smile

Это сообщение отредактировал(а) hTonus - 1.4.2007, 16:46
PM MAIL   Вверх
W0LF
Дата 1.4.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

Нет там такого класса :(

Какого класса?


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
hTonus
Дата 1.4.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Цитата(W0LF @ 1.4.2007,  16:37)
Цитата

Нет там такого класса :(

Какого класса?

Читай выше. Немнога разминулись. Идея хорошая, но несколько не по теме.
PM MAIL   Вверх
W0LF
Дата 1.4.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

Немнога разминулись. Идея хорошая, но несколько не по теме.

угу. я понял smile


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
hTonus
Дата 1.4.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Цитата(W0LF @ 1.4.2007,  16:54)
Цитата

Немнога разминулись. Идея хорошая, но несколько не по теме.

угу. я понял smile

Кстати разве метод setFullScreenMode(true); не из MIDP 2?
PM MAIL   Вверх
W0LF
Дата 1.4.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

Кстати разве метод setFullScreenMode(true); не из MIDP 2? 

угу smile этот оттуда.. но я показыл механизм работы смены экранов.. его можно и убрать

Это сообщение отредактировал(а) W0LF - 1.4.2007, 21:20


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
nagliyvred
Дата 2.4.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 2.10.2005

Репутация: 3
Всего: 3



В классе Canvas есть 2 метода showNotify() и hideNotify(). Вызываются соответственно при установке на Display данного канваса и при его снятии с Display.  Я обрабатываю отрисовку при паузах, экранчиках типа "хотите выйти?" "разрешить передачу данных?" и т.п. именно в этих методах
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.1034 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.