2012-03-28 15 views
2

コンテキストに関数を渡す必要があり、コンテキストを取得できませんgetApplicationContext()私のアプリケーションはサービスであると言わなければなりません。では、どうすればlocationListener内のコンテキストを取得できますか? onLocationChanged(Location location)方法LocationListener内でコンテキストを取得

答えて

9

したがって、どのようにコンテキストリスナー内のコンテキストを取得できますか?

LocationListenerがサービスの通常の内部クラスである場合は、MyServiceName.thisを使用してください。

LocationListenerが静的​​な内部クラスまたは別のパブリッククラスである場合は、コンストラクタにContextを指定します。

つまり、これはJavaの他の何ものと同じです。

+0

問題は、ロケーションListenerがBroadCastReceiverの魔女の中にいるのです。私はコンテキストもそうではないのです... – opc0de

+0

@ opc0de: 'BroadcastReceiver'が' registerReceiver() 'で登録されていれば、' registerReceiver ) '。あなたの 'BroadcastReceiver'がマニフェストに' 'を介して登録されている場合、**はそれと共に' LocationListener'を使用しません**。このような 'BroadcastReceivers'は、フォークスレッドやレジスタリスナーなどの' onReceive() 'の最後を過ぎても確実に何もすることはできません。 – CommonsWare

+0

私はアラームを生成しています。私は話しています...私はonReceive()のリスナーを設定しています – opc0de

1

内部より正確

Applicationクラスを拡張するクラスを作成します。次に、シングルトンを追加してください。

public class MyApplication extends Application 
    { 
     private static MyApplication instance = null; 

     public MyApplication() 
     { 
      instance = this; 
     } 

     /** 
     * Instanciates the class and initializes the variables 
     * 
     */ 
     @Override 
     public void onCreate() 
     { 
      super.onCreate(); 
      instance = this; 
     } 

     /** 
     * Creates a singleton of the current class 
     * 
     * @return Returns the app's context 
     */ 
     public static Context getInstance() 
     { 
      if (instance == null) instance = new MyApplication(); 

      return instance; 
     } 
    } 

は、その後、あなたのリスナーに、contextを呼ぶのに対し、ちょうどMyApplication.getInstance()を呼び出します。

関連する問題