BlackBerry Buttonfield 2 секунды удерживайте - PullRequest
0 голосов
/ 21 октября 2011

Я занимаюсь разработкой приложения для Blackberry. Я хочу открыть экран с домашнего экрана, когда пользователь нажмет одну кнопку и удержит ее в течение 2 секунд.

В любом случае?

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Вот код вашего вопроса.Я использовал эту реализацию BlackBerry LongClickListener , которая также содержит хорошее объяснение.

public class HoldButtonScreen extends MainScreen implements FieldChangeListener {
ButtonField _btnHold;
Timer _timer;
public HoldButtonScreen() {

    _btnHold = new ButtonField("Hold 2 sec to get popup")
                {
                        protected boolean navigationClick(int status, int time) {
                            final Field _btnHold= this;
                            _timer = new Timer();
                            System.out.println("hi there");
                            UiApplication.getUiApplication().invokeLater(new Runnable() {
                                public void run() {
                                    try{
                                        _timer.schedule(new TimerTask() {
                                            public void run() {
                                                fieldChanged(_btnHold, 0);
                                            }}, 2000);
                                        }catch(Exception e){
                                            e.printStackTrace();
                                        }
                                    }
                            });

                            return true;
                        }

                        protected boolean navigationUnclick(int status, int time) {
                            System.out.println("hi unclick");
                            add(new LabelField("You have't hold button for 2 second."));
                            _timer.cancel();
                            return true;
                        }

                };
    _btnHold.setChangeListener(this);
    add(_btnHold);
}
public void fieldChanged(Field field, int context) {
    UiApplication.getUiApplication().invokeLater(new Runnable() {
        public void run() {
            PopupScreen _popUpScreen = new PopupScreen(new VerticalFieldManager()){
                public boolean onClose() {
                    close();
                    return true;
                }
            };
            _popUpScreen.add(new LabelField("Hello , i am pop up after 2 second."));
            UiApplication.getUiApplication().pushScreen(_popUpScreen);
        }
    });

}
}
0 голосов
/ 21 октября 2011

Попробуйте, это будет успешно выполнено. Просто измените Экран в PushScreen.

private Thread splashTread;
protected int _splashTime = 200;
boolean countinue = true;
splashTread = new Thread() {
    public void run() {
        while (countinue == true) {
            try {
                synchronized (this) {
                    wait(_splashTime);
                    }
                } catch (InterruptedException e) {
                } finally {
                    synchronized (UiApplication.getUiApplication().getAppEventLock()) {
                        UiApplication.getUiApplication().pushScreen(new Login());
                        SplashScreen.this.close();                              
                    }
                countinue = false;
                }
            }
        }
    };
    splashTread.start();
...