0

我的查询是如何使用 Screen Object 访问堆叠屏幕上的字段?

确切的问题如下:

当用户单击该字段时,我有一个具有一个文本字段(ClientName)的屏幕,然后应用程序将推送一个新屏幕,它将允许用户使用 MyWebSerivces 在远程数据库中进行搜索。当用户从搜索结果中选择一个客户端时,我想使用用户在当前屏幕上选择的文本设置前一个屏幕上的文本字段。

我已经尝试过 pushScreen(new screen("text)),如果我只想执行一次此操作,这可能是结果,但这不是我的选择,因为还有两个这样的字段将转到其他屏幕从 web 服务获取数据。如果我每次推送新屏幕,那么在每次推送屏幕操作之后,我只会得到一个带有所需文本的字段集

4

3 回答 3

1

这不是与黑莓(或任何特定编程语言)相关的问题。这是应用程序架构和常识的问题。如果一个屏幕应该改变Field另一个屏幕,那么只需将一个引用传递给Field将改变它的屏幕。

于 2011-04-26T13:06:51.303 回答
0

嗨,我曾经遇到过同样的问题,我确实喜欢这样:

屏幕1

                  ------------------
  Client Name     |  text field     |
                  ------------------

当用户单击此文本字段或任何按钮时,您按下 Screen2 在屏幕 2 中,当用户选择特定值时,您执行此操作。

1)在主类中取一个静态变量说clientName。2) 设置这个变量的值。3)弹出活动屏幕

UiApplication.getUiApplication().getActiveScreen();

当调用此代码时,您回到 Screen1 现在在 screen1 中调用一个方法

    public void  onExposed()
    {
      //here u can set the text in textfield using the static variable 
      invalidate(); // for repainting
    }
于 2011-04-27T11:36:59.763 回答
0

我找到了我的问题的答案。解决方案就在我的问题中,但起初我找不到它。当我写我想使用时,解决方案非常简单

UiApplication.getUiApplication().getActiveScreen() 

这几乎是正确的方式,我正朝着正确的方向前进,但我缺少的是“我没有将屏幕(我刚刚从堆栈顶部检索到)投射到它的类型,我应该做的唯一一件事是”应该已经将屏幕投射到它的类型。像这样

UiApplication.getUiApplication().posScreen(this)
(MyScreen1) UiApplication.getUiApplication().getActiveScreen() 

现在我可以访问检索到的屏幕(MyScreen1)上的所有字段

要记住的事情

  1. 确保你只将屏幕投射到它的类型,否则bb会给你资源未找到错误

在 Stack 上使用 screen 的好处

  1. 您可以使用堆栈中已经创建的屏幕,无需创建新屏幕
  2. 如果您要创建新屏幕,它将被堆叠在内存中,并且即使它没有用也会消耗越来越多的内存(养成在没有用时弹出屏幕而不是将其留在堆栈中的习惯))
  3. 无需创建任何静态变量,因为您可以立即从其他屏幕设置所有字段
于 2011-04-28T05:43:17.500 回答