2010-12-08 9 views
0

私の主な活動はAddressFinderです。ここではAddressControllerを開始します:サブクラスのジオコーダ・コンテキスト

AddressControllerはいくつかのケースで更新する必要があります:

import android.content.Context; 
.... 
private void updateAddresses() throws IOException { 
    Geocoder geocoder = new Geocoder(context); 
for (Address a: address) { 
List<Address> addressIn = geocoder.getFromLocation(a.getLatitude(), 
                 a.getLongitude(), 1); 
} 
} 

私はそれを使用する方法を理解していません。私はthiscontextgetBaseContext()getApplicationContext()を試しましたが、何も機能しませんでした。さらに、私はAdresscontrollerに主なアクティビティのcontextgetApplicationContext)を引数として渡そうとしました。

答えて

0

は、変数を作成します。

Context con = this; 
... 
Geocoder geocoder = new Geocoder(con); 

たぶん私は私が解決策だと思う別のコンストラクタ?:

public Geocoder (Context context, Locale locale) 
+0

ジオコーダーがコントローラにあるか、または彼を移動させたのですか?私はあなたの提案を試み、コントローラで 'con 'を使うことができるコンストラクタを変更しました:'新しいAddressController(con) ' - それは答えではありません。 Anroid.developersの – foobartux

+0

は、 というコンストラクタのコンテキストを呼び出しています。アクティビティ –

+0

あなたはこのコンストラクタでアプリケーションがクラッシュすることは確実ですか? –

1

を使用しています。主な活動で、私は次を使用します。

ac.updateAddr(getApplicationContext()); 

を私が変更AddressControllerで:私はAddressControllerGeocoderにコンテキストを与える方法ザッツ

public void updateAddr(Context c) throws IOException { 
    updateAddresses(c); 
} 

を。正常に動作します。