异步类没有传递参数

时间:2014-01-25 14:43:45

标签: java android eclipse android-asynctask jsoup

我的异步类会抛出一些错误。使用AsyncLoadData的行说我应该创建局部变量url

    public void getData() {
        new AsyncLoadData(this,this).execute(url);  
    }

我的AsyncLoadData类

package com.example.hay;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.EditText;

public class AsyncLoadData extends AsyncTask<String, Void, String> {
    private Context mContext;
    private ILoadDataListener mListener;

    public AsyncLoadData(Context context, ILoadDataListener listener) {
        this.mContext = context;
        this.mListener = listener;
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            EditText tf = (EditText) this.findViewById(R.id.editText1);
            String url = params[0];
            url = tf.getText().toString();
            Document doc;   
            doc = Jsoup.connect(url).get();
            String title = doc.text();

            return title;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    private EditText findViewById(int edittext1) {
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        mListener.complete(result);
    }

    @Override
    protected void onPreExecute() {
        mListener.loading();
    }

    public interface ILoadDataListener {
        void loading();
        void complete(String result);
    } 
}

正如您所看到的,AsyncLoadData应该传递url变量。

1 个答案:

答案 0 :(得分:1)

在调用此行之前,您是否已在代码中的其他位置声明urlnew AsyncLoadData(this,this).execute(url);

如果没有,您应该在它之前添加行String url = "the value of the url you are trying to call";,否则url方法中不存在变量getData ...