每次拨打电话时,我都会尝试在PhoneScreen上显示自定义图像和文字。我已经实现了PhoneListener接口并尝试了以下代码:
PhoneScreen phoneScreen = new PhoneScreen(callId, app);
phoneScreen.deleteAll(); // Empty the default PhoneScreen
phoneScreen.setScreenBackground(0xFF0000);
phoneScreen.setScreenBackground(0x00FF00);
BitmapField bmf = new BitmapField(Bitmap.getBitmapResource("img.png"), Field.FIELD_TOP);
LabelField labelField = new LabelField("Location");
PhoneScreenVerticalManager psvm = new PhoneScreenVerticalManager();
psvm.add(bmf);
psvm.add(labelField);
phoneScreen.add(psvm);
phoneScreen.sendDataToScreen();
程序因第二行崩溃,我尝试清空默认的PhoneScreen。如果我对该行进行评论,那么它会在PhoneScreen的底部显示图像,同时保留默认PhoneScreen中的所有其他字段。
我想删除默认PhoneScreen中的所有字段并添加自定义字段。在此先感谢您的帮助!
答案 0 :(得分:1)
一个hackish解决方案:在PhoneListener实现中,获取当前活动的屏幕并将其用作PhoneScreen。然后清空屏幕,以便添加自己的字段。
类似的东西:
Screen phoneScreen = UiApplication.getUiApplication().getActiveScreen();
phoneScreen.deleteAll();
// Add your own fields to phoneScreen now
答案 1 :(得分:0)
移除对phoneScreen.deleteAll()
的调用。
执行上述行时,将抛出RuntimeException
异常,其中“Manager为空”。消息。
如果您使用的是BlackBerry API 6.0及更高版本,请考虑使用ScreenModel#getPhoneScreen()
代替PhoneScreen()
,因为后者已弃用。查看this development guide了解详情。
编辑:恕我直言,无法完全自定义PhoneScreen和默认的“字段”(不确定它们是偶数字段),例如图片,电话号码等等,将始终出现在以编程方式添加的字段之前。