找不到符号方法execute(String)-Android Studio

时间:2016-05-05 08:05:19

标签: java android methods

单词"执行"在代码中导致错误,即无法找到符号方法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;

    }
}

2 个答案:

答案 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> {
        //...
    }
}