单词"执行"在代码中导致错误,即无法找到符号方法execute(String)。任何人都可以帮助解决错误吗?感谢
public void onClickGetWeather(View v) {
EditText editText = (EditText) findViewById(R.id.editTextCountry);
String location = editText.getText().toString();
weather_fragment task = new weather_fragment();
try {
double temp = task.execute(location).get();
TextView tv = (TextView) findViewById(R.id.textView);
tv.setText("Temperature: " + temp);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
weather_fragment代码:
public class WeatherAsyncTask extends AsyncTask<String, Void, Double> {
@Override
protected Double doInBackground(String... params) {
String data = ((new WeatherHttpClient()).getWeatherData(params[0]));
double temp = 0.0f;
try {
temp = JSONWeatherParser.getWeather(data);
} catch (JSONException e) {
e.printStackTrace();
}
return temp;
}
}
答案 0 :(得分:0)
您的班级 weather_fragment 需要一个采用String
参数的方法,
如果你已经有一个类似这样的方法,那么 overload it (即用另一个名称写一个字符串作为参数...)如果没有则将其定义为一个< / p>
答案 1 :(得分:0)
您正在execute(string)
类型的对象上调用weather_fragment
而不是类型为WeatherAsyncTask
的AsyncTask。
您需要以这种方式调用异步任务:
WeatherAsyncTask task = new WeatherAsyncTask();
task.execute(string);
因此,如果你真的想通过weather_fragment
的实例开始你的asynctask,你将需要这样的东西:
public class weather_fragment ... {
public Double execute(String s){
new WeatherAsyncTask().execute(string);
// You must get the Double to return from the
// onPostExecute(Double d) of the WeatherAsyncTask
...
}
public class WeatherAsyncTask extends AsyncTask<String, Void, Double> {
//...
}
}