我的查询是如何使用屏幕对象访问堆叠屏幕上的字段?
确切的问题如下:
当用户点击该字段时,我有一个屏幕有一个文本字段(ClientName),然后应用程序将推送一个新屏幕,它将允许用户使用MyWebSerivces在远程数据库中搜索。当用户从搜索结果中选择一个客户端时,我想在上一个屏幕上设置文本字段,其中包含用户在当前屏幕上选择的文本。
我已经尝试过pushScreen(新屏幕(“文本”),如果我只想做一次这个操作,那可能就是结果但是这不是我的选择,因为还有两个这样的字段会去其他屏幕从webservices获取数据。如果我每次按下新屏幕,那么在每次推屏操作后,我只会得到一个带有所需文本的字段
答案 0 :(得分:1)
这不是黑莓(或任何特定的编程语言)相关问题。这是应用程序架构和常识的问题。如果一个屏幕应该更改另一个屏幕的Field
,那么只需将Field
的引用传递给将更改它的屏幕。
答案 1 :(得分: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
}
答案 2 :(得分:0)
我找到了问题的答案。解决方案就在我的问题中,但起初我无法找到它。 解决方案非常简单 我写的时候想用
UiApplication.getUiApplication().getActiveScreen()
这几乎是正确的方式,我正朝着正确的方向前进,但我失踪的是“我没有将屏幕(我刚刚从堆栈顶部检索到)投射到它的类型 我唯一应该做的就是“应该将屏幕转换为其类型。就像这样
UiApplication.getUiApplication().posScreen(this)
(MyScreen1) UiApplication.getUiApplication().getActiveScreen()
现在我可以访问检索到的屏幕上的所有字段(MyScreen1)
要记住的事情
在Stack上使用屏幕的好处