2012-01-16 20 views
0

Blackberry App開発プロジェクト(これは私が今やっていることです)に必要なJavaの新機能です。私の問題は、アプリケーションで通知機能を実装するためにオンラインで見つけたこのクラスを使用しようとしていることです。私が言ったように私はJavaにとって非常に新しかったので、setVisible1を別のクラス、例えばUserInterfaceと呼ぶ方法はわかりません。私はMyAppIndicator._indicator.setVisible1(true,1);を試しましたが、これはエラーを生成します:Java:異なるクラスの関数を呼び出す

"メソッド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

がちょうどMyAppIndicator.setVisible1(真、1)を試してみてください。 – bschultz

+0

コードを正しくインデントしてください。 –

答えて

1

のJavaのクラスからメソッドを呼び出すために、あなたはクラスのインスタンスを必要とする(またはクラスが「静的」である場合は、直接として、メソッドを使用することができます「静的」とは基本的に1つのインスタンスのみを意味します)。あなたのケースでは

MyAppIndicatorSingletonを実装しています

public static MyAppIndicator _instance; 
private MyAppIndicator() {}; 

public static MyAppIndicator getInstance() { 
    if (_instance == null) { 
     _instance = new MyAppIndicator(); 
    } 

    return(_instance); 
} 

これは、このようなインスタンスがすでに存在する場合、それはMyAppIndicator のインスタンスを返します、またはそれは新しいものを作成しますが、場合は、のgetInstance()を呼び出すとことを意味しますインスタンスはありません。

クラスのインスタンスを取得した後、適切なアクセス修飾子がある場合は、単にそのメソッドを呼び出します。あなたの場合、setVisible1にはアクセス修飾子 'public'がありますので、MyAppIndicatorの外で呼び出すことができます。コード中のSO

:メソッド呼び出し

MyAppIndicator instanceOfMyAppIndicator = MyAppIndicator.getInstance(); 

B):

a)のインスタンスを取得する

instanceOfMyAppIndicator.setVisible1(true,1); 
+0

これは大変ありがとうございました。 – user1152440

0

、あなたは)setVisible1(

MyAppIndicator._indicator.setVisible1(true,1); 
+0

getInstance()が以前に呼び出されなかった場合、2番目の呼び出しでNullPointerExceptionが発生することに注意してください。 – atk

+0

2番目の呼び出しでは、 "メソッドsetVisible1(boolean、int)がApplicationIndicator型の定義されていません"というエラーが発生します。私はMyAppIndicator.getInstance()を呼び出すべきだと言っていました。setVisible1(true、1); NOT MyAppIndicator._indicator.setVisible1(true、1); – Rabi

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); 
  • より

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

    を呼び出す必要があり、通常、公共の方法でされているので、他のクラスは、MyAppIndicatorクラスのインスタンスでメソッドを呼び出すことができます。

  • setVisible1()の定義と同じように、同じ番号の&型の引数を渡す必要があります。定義はsetVisible1(boolean visible、int count)を読み込むので、ブール値と整数を渡す必要があります。 Javaの規約では、 "true"を渡すとインジケータが見えるようになり、 "false"はそれを隠すでしょう。 intは普通ではありませんが、コードを読み取ると無視されますので、必要なものを渡してください。
  • クラスのインスタンスを取得するには、通常new ClassNameと記述します。しかし、MyAppIndicatorはコンストラクターをprivateとして宣言しているため、他のクラスはそれを呼び出すことができません。代わりに、myAppIndicatorはオブジェクトの作成を処理するgetInstance()メソッドを提供します。

また、Javaチュートリアルを読む必要があります。からは、の詳細な説明があります。

0

あなたは、次の操作を行うことができます

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

ありがとう、これは解決策でした、私はそれを感謝します! – user1152440

+0

それからupvote plz;) – krackmoe

+0

私は十分な評判ではないでしょう:( – user1152440

関連する問題