无法在黑莓应用程序中关闭popupScreen

时间:2012-02-06 11:42:35

标签: multithreading blackberry popup synchronized

我正在做一个黑莓应用,它使用弹出屏幕供用户登录。 如果登录成功,它应该关闭应用程序并继续执行该线程的后台。不幸的是,即使在成功登录后阻止我的主屏幕,弹出屏幕也会出现,但我的后台线程工作正常。

有关于此的任何想法吗?

附加评论的代码:

close();
signInButtonClicked(phoneNumber, pinNumber);
synchronized (UiApplication.getEventLock()) {
    UiApplication.getUiApplication().popScreen(getScreenBelow());
}

这是我的代码

btnOk.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) 
{
    // TODO Auto-generated method stub
    try
    {
        if(field == btnOk)
        {
            phoneNumber = efPhoneNumber.getText().toString();
            System.out.println("User Entered Mobile Number: " + phoneNumber);
            pinNumber = efPinNumber.getText().toString();
            System.out.println("User Entered PIN Number: " + pinNumber);

        testClass lvg = new testClass();

        if(!lvg.TableExists())
        {
            lvg.CreateTable();
            lvg.InsertMobileNumber(phoneNumber);
        }
        else 
        {
            String mobile = lvg.getMobileNumber();
            if(!mobile.equals(phoneNumber))
            {
                lvg.UpdateMobileNumber(phoneNumber);
            }
        }               

        System.out.println("We should close");


        signInButtonClicked(phoneNumber, pinNumber);

        net.rim.device.api.ui.Screen scr = UiApplication.getUiApplication().getActiveScreen();

        if (scr instanceof LiveGuardScreen) 
        {
            synchronized (UiApplication.getEventLock()) 
            {
                UiApplication.getUiApplication().popScreen(scr);
            }
        }
    }
}catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }
}
});

2 个答案:

答案 0 :(得分:0)

对不起,我无法用你的代码剪掉头或尾。我想你必须给我们更多。如果登录不起作用,那么在行之间进行读取似乎是打算保留弹出窗口。一种更有效的技术是每次弹出窗口,如果登录不起作用,则将其重新启动,并向用户发送有关发生的事情的消息。

我在getting text input from a popup dialog上有一篇博文,可能会帮助您入门。如果没有,你将不得不给我们更多的工作。

答案 1 :(得分:0)

感谢您帮助我解决了问题。我做的是我显示了popupScreen,我输入了发送的事件,允许我关闭弹出屏幕。因为之前我调用了后来调用的方法,因为我在MainScreen上调用了popupScreen,因此我继续运行。所以,即使我正确地关闭它,接下来我还会弹出几个窗口!

我希望这是有道理的。但它对我有用,也可能有更好的方法。感谢你们的贡献

干杯