我正在做一个黑莓应用,它使用弹出屏幕供用户登录。 如果登录成功,它应该关闭应用程序并继续执行该线程的后台。不幸的是,即使在成功登录后阻止我的主屏幕,弹出屏幕也会出现,但我的后台线程工作正常。
有关于此的任何想法吗?
附加评论的代码:
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();
}
}
});
答案 0 :(得分:0)
对不起,我无法用你的代码剪掉头或尾。我想你必须给我们更多。如果登录不起作用,那么在行之间进行读取似乎是打算保留弹出窗口。一种更有效的技术是每次弹出窗口,如果登录不起作用,则将其重新启动,并向用户发送有关发生的事情的消息。
我在getting text input from a popup dialog上有一篇博文,可能会帮助您入门。如果没有,你将不得不给我们更多的工作。
答案 1 :(得分:0)
感谢您帮助我解决了问题。我做的是我显示了popupScreen,我输入了发送的事件,允许我关闭弹出屏幕。因为之前我调用了后来调用的方法,因为我在MainScreen上调用了popupScreen,因此我继续运行。所以,即使我正确地关闭它,接下来我还会弹出几个窗口!
我希望这是有道理的。但它对我有用,也可能有更好的方法。感谢你们的贡献
干杯