2014-01-25 49 views
0

我的異步類拋出了一些錯誤。與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變量。

+0

這個代碼是非常壞了。 1)正如編譯器告訴你的,在「getData」方法中沒有名爲「url」的變量。 2)您的AsyncTask已損壞:您可能無法觸及非UI線程的UI對象方法。 –

回答

1

在調用此行之前,您是否在代碼的其他地方聲明瞭urlnew AsyncLoadData(this,this).execute(url);

如果沒有,你應該之前將其添加行String url = "the value of the url you are trying to call";,否則變量url不在getData方法存在...