2014-01-25 3 views
0

내 비동기 클래스에서 오류가 발생합니다. AsyncLoadData이있는 행은 AsyncLoadData이 url 변수를 전달해야 볼 수 있듯이 나는 지역 변수 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); 
    } 
} 

를 작성해야한다고 말한다.

+0

이 코드는 꽤 고장 ... 그렇지 않으면 변수 urlgetData 방법에 존재하지 않는, 그냥 전에 선 String url = "the value of the url you are trying to call";을 추가해야합니다. 1) 컴파일러에서 "getData"메서드에 "url"이라는 변수가 없다고 알려줍니다. 2) AsyncTask가 깨졌습니다. UI가 아닌 스레드에서 UI 객체 메서드를 건드릴 수 없습니다. –

답변

1

이 줄을 호출하기 전에 코드의 다른 부분에 url을 선언하셨습니까? new AsyncLoadData(this,this).execute(url);?

하지 않으면, 당신은

관련 문제