Java:从不同的类调用函数

时间:2012-01-16 18:33:05

标签: eclipse blackberry java-me notifications

我是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);
            }
        }
    }
}

4 个答案:

答案 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);
  • setVisible1()是一个常规的公共方法,因此任何其他类都可以在MyAppIndicator类的实例上调用该方法。
  • 你需要通过相同的号码和& setVisible1()的参数类型在其定义中。该定义读取setVisible1(boolean visible,int count),因此您需要传递一个布尔值和一个整数。 Java约定是传递“true”可能会使指示符可见,“false”将隐藏它。 int是不寻常的,但是读取它被忽略的代码,所以传递你想要的任何东西。
  • 要获取类的实例,通常会编写new ClassName。但是,MyAppIndicator将构造函数声明为private,因此其他类无法调用它。相反,myAppIndicator提供了一个getInstance()方法,它将为您处理对象构造。

您还应该阅读Java教程 - 他们已经对更好地描述了所有这些。

答案 3 :(得分:0)

您可以执行以下操作:

MyAppIndicator myAppIndicator = MyAppIndicator.getInstance();
myAppIndicator.setVisible1(true,1);