我是Java的新手,这是Blackberry App开发项目所需要的(这就是我现在正在做的)。我的问题是我正在尝试使用我在网上找到的这个课程(下面附件)在我的应用程序中实现通知功能。正如我所说,我对Java非常陌生,所以我不知道如何从另一个类调用setVisible1
,比如UserInterface
。我尝试了MyAppIndicator._indicator.setVisible1(true,1);
,但这会产生错误:
“方法setVisible1(boolean,int)未定义类型ApplicationIndicator”。
任何帮助将不胜感激。谢谢!
public class MyAppIndicator
{
public ApplicationIndicator _indicator;
public static MyAppIndicator _instance;
private MyAppIndicator () {}
public static MyAppIndicator getInstance() {
if (_instance == null) {
_instance = new MyAppIndicator ();
}
return(_instance);
}
public void setupIndicator() {
//Setup notification
if (_indicator == null) {
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
_indicator = reg.getApplicationIndicator();
if(_indicator == null) {
ApplicationIcon icon = new ApplicationIcon(EncodedImage.getEncodedImageResource ("status_icon_24x24.png"));
_indicator = reg.register(icon, false, true);
_indicator.setValue(0);
_indicator.setVisible(false);
}
}
}
public void setVisible1 (boolean visible, int count) {
if (_indicator != null) {
if (visible) {
_indicator.setVisible(true);
_indicator.setValue(count);
} else {
_indicator.setVisible(false);
}
}
}
}
答案 0 :(得分:1)
为了从Java中的Classes调用方法,你需要类的实例(或者如果类是'static'你可以直接使用这些方法,因为'static'基本上只意味着1个实例)。
在您的情况下MyAppIndicator
实施Singleton:
public static MyAppIndicator _instance;
private MyAppIndicator () {};
public static MyAppIndicator getInstance() {
if (_instance == null) {
_instance = new MyAppIndicator ();
}
return(_instance);
}
这意味着当你调用getInstance()时,它将返回MyAppIndicator
的实例
如果这样的实例已经存在,或者它将创建一个新实例,如果没有实例。
获取类的实例后,如果它们具有适当的访问修饰符,则只需调用它的方法。在您的情况下,setVisible1
的访问修饰符为“公开”,因此您可以在MyAppIndicator
之外调用它。
所以在代码中:
a)获取实例:
MyAppIndicator instanceOfMyAppIndicator = MyAppIndicator.getInstance();
b)调用方法:
instanceOfMyAppIndicator.setVisible1(true,1);
答案 1 :(得分:0)
查看上面的代码,你应该调用
MyAppIndicator.getInstance().setVisible1(true,1);
大于
MyAppIndicator._indicator.setVisible1(true,1);
答案 2 :(得分:0)
boolean visible = ...; // you need to set something here int count = ...; // you need to set something, here MyAppIndicator mai = MyAppIndicator.getInstance(); mai.setVisible1(visible, count);
new ClassName
。但是,MyAppIndicator将构造函数声明为private,因此其他类无法调用它。相反,myAppIndicator提供了一个getInstance()方法,它将为您处理对象构造。您还应该阅读Java教程 - 他们已经对远更好地描述了所有这些。
答案 3 :(得分:0)
您可以执行以下操作:
MyAppIndicator myAppIndicator = MyAppIndicator.getInstance();
myAppIndicator.setVisible1(true,1);