我需要在我的黑莓应用程序中创建一个自定义菜单,以便我可以管理它的外观.我设法创建了一个自定义菜单,创建了一个扩展a PopupScreen
和使用抽象方法MenuItem
自定义的类.我将该方法设计为抽象来模拟run()方法.LabelField
invokeAction()
invokeAction()
MenuItem
一切都很好,但我记得一些东西.如果我的老板问我要实现本地MenuItem
就像开关应用和关闭.我不认为实现Close将是一个问题,但Switch应用程序和其他本机MenuItem
如Show Keyboard,这将给我一个问题.所以我想出另一个解决方案,这是我的代码:
public CustomMenu(MainScreen screen) {
super(vfm);
Menu menu = screen.getMenu(0);
for(int i = 0; i < menu.getSize(); i++){
final MenuItem finalMenu = menu.getItem(i);
vfm.add(new CustomMenuItem(finalMenu.toString(), Field.FOCUSABLE){
protected boolean invokeAction(int action) {
finalMenu.run();
return true;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的构造函数CustomMenu
.我接受一个MainScreen
作为我的参数的实例来获取列表MenuItem
并将其添加到我现有的列表中CustomMenu
.该invokeAction()
重写的方法存在着对方run()
的方法MenuItem
.这是我所做的结果:
我设法把那些本机MenuItem
放在我 …
例如,我有一个非同步的方法,如下所示:
public void nonSynchronized(){
boolean flag = false;
if(/*some condition*/){
flag = true;
}
//more line of codes here
if(flag == true){
//do something here - let's say line 33.
}
}
Run Code Online (Sandbox Code Playgroud)
如果第一个线程执行该方法然后设置flag
为true
,并且在执行第33行之前另一个线程执行该方法然后将该变量重置flag
为false
,第一个线程是否仍然执行第33行,该怎么办?
我有一个需要发送到服务器的图像.有没有办法在黑莓中将位图(jpg)转换为base64字符串?