Blackberry 如何使用屏幕对象(UiApplication.getUiApplication().getActiveScreen())访问屏幕上的文件

Blackberry 如何使用屏幕对象(UiApplication.getUiApplication().getActiveScreen())访问屏幕上的文件,blackberry,uiapplication,Blackberry,Uiapplication,我的问题是如何使用screen对象访问堆叠屏幕上的字段 具体问题如下: 我有一个屏幕,其中有一个文本字段(ClientName),当用户单击该字段时,应用程序将推送一个新屏幕,它将允许用户使用MyWebSerivces在远程数据库中搜索。当用户从搜索结果中选择一个客户端时,我想用用户在当前屏幕上选择的文本设置上一屏幕上的文本字段 我试过推屏(新屏幕(“文本”)如果我只想做一次这个操作,这可能就是结果,但这不是我的选择,因为还有两个这样的字段将转到另一个屏幕,从Web服务获取数据。如果我每次按下新

我的问题是如何使用screen对象访问堆叠屏幕上的字段

具体问题如下:

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


我试过推屏(新屏幕(“文本”)如果我只想做一次这个操作,这可能就是结果,但这不是我的选择,因为还有两个这样的字段将转到另一个屏幕,从Web服务获取数据。如果我每次按下新屏幕,那么在每次按下屏幕操作之后,我只会得到一个带有所需文本的字段集黑莓(或任何特定的编程语言)相关问题。这是一个应用程序架构和常识的问题。如果一个屏幕应该更改另一个屏幕的
字段
,那么只需将
字段
的引用传递给将更改它的屏幕。

嗨,我曾经遇到过同样的问题,我这样做:

屏幕1

                  ------------------
  Client Name     |  text field     |
                  ------------------
当用户单击此文本字段或您按下的任何按钮时,屏幕2 在屏幕2中,当用户选择一个特定的值时,则执行此操作

1) 在main类中取一个静态变量,比如clientName。 2) 设置此变量的值。 3) 弹出式活动屏幕

UiApplication.getUiApplication().getActiveScreen();
当调用此代码时,返回屏幕1 现在在screen1中调用了一个方法

    public void  onExposed()
    {
      //here u can set the text in textfield using the static variable 
      invalidate(); // for repainting
    }

我已经找到了我问题的答案。答案就在我的问题里,但一开始我没能找到。 解决方案非常简单 当我写的时候,我想用

UiApplication.getUiApplication().getActiveScreen() 
这几乎是正确的方法,我正朝着正确的方向前进,但我缺少的是“我没有将屏幕(我刚刚从堆栈顶部检索到的)转换为它的类型 我唯一应该做的是“应该把屏幕铸造成它的类型。像这样。”

UiApplication.getUiApplication().posScreen(this)
(MyScreen1) UiApplication.getUiApplication().getActiveScreen() 
现在我可以访问检索到的屏幕上的所有字段(MyScreen1)

要记住的事情

  • 请确保您仅将屏幕转换为其类型,否则bb将给出u resource not found错误
  • 在堆栈上使用屏幕的好处

  • 您可以使用堆栈中已创建的屏幕,无需创建新屏幕
  • 如果你要创建一个新的屏幕,它将被堆叠在内存中,即使它没有用,也会消耗越来越多的内存(如果它没有用,就习惯于弹出屏幕,而不是把它留在堆栈上))
  • 无需创建任何静态变量,因为u将能够从其他屏幕上立即设置所有字段

  • 使用静态变量并将其设置为onExpsoed事件是一个好主意,但当我们谈论有效内存使用时,这里的静态值并不是我的最佳选择,我的应用程序是移动应用程序。是的,我在我的问题本身中找到了我问题的答案。哦,dats gr8 u有ans,当需要避免使用静态变量时,应该使用静态变量内存问题。你必须发布你的答案,以便所有其他人都能获得关于rply的帮助,是的,这可能不是一个黑莓问题,但我正在开发一个黑莓应用程序,我想在bb社区我会找到答案。但是你建议的方式是“传递参考”“在这种情况下,我必须按下屏幕,我不希望新屏幕被按下……无论如何,我只在我的问题中找到了我问题的答案……chiill