AsyncTask を使用して、別のクラスのコードを呼び出しています。
public class addNewLocation extends AsyncTask<HomerLocation, Integer, Void> {
@Override
protected Void doInBackground(HomerLocation... location) {
bridge.addNewLocation(location);
return null;
}
protected void onPostExecute(String result) {
System.out.println("Result after execution is : " + result);
}
}
ボタンコードでこのコマンドを介してこれを呼び出しています:
new addNewLocation().execute(newLocation,null,null);
newLocation は、ダイアログでユーザーの入力を介して設定したいくつかの属性を持つオブジェクトです。
「bridge.addNewLocation(location);」という行は、パラメーターとして location と呼ばれる HomerLocation オブジェクトを渡して、ブリッジ クラスの addNewLocation メソッドを呼び出そうとしています。ただし、エラーが発生します。
The method addNewLocation(HomerLocation) in the type HomerJSONBridge is not
applicable for the arguments (HomerLocation[])
ブリッジ クラスのメソッドは次のとおりです。
public void addNewLocation(HomerLocation location) {
// code to add new location to homer
//HomerLocation location = locationArray;
client = new DefaultHttpClient();
StringBuilder url = new StringBuilder(HomerURL);
url.append("%7B%22operation%22%3A%22setLocation%22%2C%20%22name%22%3A%22"+location.getName()+
"%22%2C%20%22locationContextID%22%3A%22"+location.getContextID()+"%22%2C%20%22image%22%3A%22"+location.getIcon()+
"%22%2C%22design%22%3A%22"+location.getDesign()+"%22%7D");
}
これにより、アクセスしているサーブレットに JSON コマンドが渡されます。次のようにすべての場所でコードを書き直すと:
protected Void doInBackground(HomerLocation... location) {
HomerLocation location1 = location[0];
bridge.addNewLocation(location1);
return null;
}
と
public void addNewLocation(HomerLocation[] locationArray) {
// code to add new location to homer
HomerLocation location = locationArray[0];
client = new DefaultHttpClient();
StringBuilder url = new StringBuilder(HomerURL);
url.append("%7B%22operation%22%3A%22setLocation%22%2C%20%22name%22%3A%22"+location.getName()+
"%22%2C%20%22locationContextID%22%3A%22"+location.getContextID()+"%22%2C%20%22image%22%3A%22"+location.getIcon()+
"%22%2C%22design%22%3A%22"+location.getDesign()+"%22%7D");
}
私はまだ同様のエラーが発生します(!):
The method addNewLocation(HomerLocation[]) in the type HomerJSONBridge is
not applicable for the arguments (HomerLocation)
HomerLocation オブジェクトと HomerLocation[] の両方のように見えるので、私は本当に混乱しています! どんな助けでも大歓迎です。