嗨我有两个屏幕,我从不想弹出,因为他们从网络加载数据,我不想一直加载它。但是,如果我尝试从一个导航到另一个,我得到一个RuntimeException,说我试图推送已经显示的屏幕。是否有解决推送屏幕的工作?像改变屏幕的东西?黑莓推送屏幕没有弹出
回答
你当然可以做Rupak和Richard的建议。但是,让我提供另一种选择,这可能需要较少的重新设计。
听起来好像你正在做一些昂贵的操作,当Screen
被实例化,对吧?你想避免多次这样做?
你推你的屏幕是这样的:
UiApplication.getUiApplication().pushScreen(new FooScreen());
UiApplication.getUiApplication().pushScreen(new BarScreen());
相反,请确保无论你推屏幕保存屏幕,稍后再使用(至少对于这两个屏幕时,您认为应该不会被弹出)。我通常有类似ScreenController
类来处理这个问题。所以,你可以这样做:
if (_fooScreen == null) {
_fooScreen = new FooScreen();
}
UiApplication.getUiApplication().pushScreen(_fooScreen);
...
UiApplication.getUiApplication().pushScreen(_barScreen);
UiApplication.getUiApplication().popScreen(_fooScreen); // popped but still referenced
...
UiApplication.getUiApplication().pushScreen(_fooScreen); // pushed, but not recreated
你不是要推每一次重新创建画面,或当你弹出它时会破坏它的状态。
如果这真的是不是你想要的,你相信,你的两个屏幕真的应该永远被弹出,那么也许他们不应该Screens
可言。也许他们应该是Manager
的子类。
也许你只有一个Screen
(不是两个),它在逻辑上管理你原来作为两个独立屏幕的内容。因此,它们之间进行切换,您将只需单Screen
做到这一点:
add(_fooManager);
remove(_barManager);
或
replace(_barManager, _fooManager); // logically similar to "changing" screens
屏幕根本都建成使用push和pop语义。如果这不适合你,只需使用Manager
子类。由于Screen
延伸Manager
,这应该涉及最小的代码更改重构这种方式。
你确实会失去一些用于切换屏幕的漂亮过渡特征。然而,因为我不得不写黑莓那些代码是可用之前,我已经学会了依靠替代技术,such as this one for animating the switching of Fields
完全分离查看层,从控制器层,往往是要走的路。但是,特别是对于BlackBerry应用程序,我确实认为有时过于严格地遵守MVC体系结构会增加代码膨胀和维护成本,而且并非真正需要解决像您所描述的问题。
无论如何,只是一个想法。
Peter Strange对BlackBerry屏幕语义here给出了非常好的解释。基本上你应该(如Rupak所建议的那样)将应用程序逻辑与流程分开。如果您打算允许或鼓励用户频繁地重新显示页面,您应该加载一次数据并保留在本地缓存中一段合理的时间,以便稍后重新显示。
我在会议上看到了彼得。很高兴与他交谈:) – 2012-08-08 08:53:28
- 1. 黑莓:InCall屏幕
- 2. 如何从黑莓全球屏幕推新屏幕?
- 3. 黑莓编程 - 创建无边界弹出屏幕
- 4. 管理器(黑莓)弹出屏幕滚动问题
- 5. 黑莓主屏幕转换
- 6. 黑莓屏幕导航
- 7. 黑莓屏幕导航
- 8. 黑莓 - 等待屏幕
- 9. 黑莓部分屏幕MapView
- 10. 黑莓连接屏幕
- 11. 加载屏幕黑莓
- 12. 推送通知:黑莓
- 13. 黑莓推送通知
- 14. 黑莓推送通知
- 15. 黑莓推送通知
- 16. 黑莓推送服务
- 17. 如何删除黑莓java中的弹出屏幕的所有回调java
- 18. EarlGrey推出带黑色屏幕的APP
- 19. OpenGLES objective-c屏幕没有弹出
- 20. 黑莓,黑莓的初始屏幕图像webworks
- 21. 更改通话记录屏幕并推送自己的通话ID的黑莓
- 22. 黑莓应用程序推一个新的屏幕
- 23. 黑莓:黑莓应用程序中的推送通知
- 24. 黑莓内存限制屏幕?
- 25. 控制屏幕方向黑莓
- 26. 转到黑莓的第一屏幕
- 27. 如何更新黑莓手机屏幕?
- 28. 的图像适合屏幕黑莓
- 29. 位置在黑莓屏幕上点击
- 30. 黑莓中的加载屏幕
你试过了什么?显示一些代码? – Signare 2012-08-07 14:06:04
从视图中分离应用程序逻辑。 – Rupak 2012-08-07 14:06:08