Как создать изображение слайд-шоу для BlackBerry? - PullRequest
0 голосов
/ 22 июня 2011

Что я пытаюсь сделать, так это то, что при нажатии кнопки на экране 1 я пытаюсь нажимать на экран 2 с разными изображениями и различным контекстом перехода.

код выглядит следующим образом

public void fieldChanged(Field field, int context) 
{
        if(field==slideButton)
        {       
            for(int i=0;i<bitmaps.length;i++)
            {



                slideScreen = new SliderScreen(bitmaps[i]);

                UiApplication.getUiApplication().pushScreen(slideScreen);
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                UiApplication.getUiApplication().popScreen(slideScreen);

            }

        }
    }
}

Проблема в том, что ничего не появляется. Есть ли другой способ добиться этого ...

1 Ответ

0 голосов
/ 22 июня 2011

Исправлена ​​версия вашей первоначальной идеи:

public void fieldChanged(Field field, int context) {
    if (field==slideButton) {

        final UiApplication app = UiApplication.getUiApplication();

        new Thread(new Runnable() {
            public void run() {
                for (int i = 0; i < bitmaps.length; i++) {
                    final SliderScreen slideScreen = 
                        new SliderScreen(bitmaps[i]);

                    app.invokeAndWait(new Runnable() {
                        public void run() {
                            app.pushScreen(slideScreen);
                        }
                    });

                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                    app.invokeAndWait(new Runnable() {
                        public void run() {
                            app.popScreen(slideScreen);
                        }
                    });
                }
            }
        }).start();
    }
}

Ваш код не работал, потому что поток пользовательского интерфейса спал между push и pop, поэтому у него нет времени и шансов начать рисовать экран Обратите внимание, что я переместил все действие в отдельный поток. Теперь у основного потока пользовательского интерфейса есть свободное время для рисования.

...