2013-06-29 2 views
1

나는 jsoup를 사용하는 것이 새로운데, 내 연구 나 웹에서 보았 듯이 public static void main 안에 jsoup 코드를 사용해야 하는지를 묻고 싶다. 다른 방법으로도 사용할 수 있습니까? 또한 Jsoup.connect(). get()에 문제가 있습니다. 내 응용 프로그램을 실행할 때 항상 중지됩니다. 이미 AndroidManifest.xml에 android.permission.Internet을 추가했습니다. 나는 요리 책을 읽고 문서를 파싱하는 것으로 시작하기로 결정했으며 여전히 동일한 결과를 생성합니다. - 불행히도 응용 프로그램이 중지되었습니다. 내 minsdkversion은 8이고 targetdkversion은 15입니다. 나와 함께 견뎌주십시오.안드로이드 - Jsoup.connect(). get()

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class Jsoup_2 extends Activity{ 
static String website_url = "http://www.google.com"; 

/** 
* @param args 
*/ 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_jsoupactivity); 

    try{ 
     Document doc = Jsoup.connect(website_url).get(); 
     ((TextView)findViewById(R.id.label)).setText("Loading website"); 
    }catch (Exception e){ 
     ((TextView)findViewById(R.id.label)).setText("error"); 
    } 
} 
} 

답변

2

메인 스레드에서이 코드를 실행하는 때문입니다. AsyncTask 또는 다른 새 스레드를 넣어야합니다 ... 메인 스레드에서 무거운 작업을 절대로 실행하지 마십시오 (예 : onCreate() 메서드).

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_jsoupactivity); 

new AsyncTask(String,Integer,Document) { 
    public Document doInBackground(String... params) { 
    Document doc = null; 
    try{ 
    doc = Jsoup.connect(params[0]).get(); 

    }catch (Exception e){ 
    doc = null; 
    } 

return doc; 
    } 

public void onPostExecute(Document result) { 
    if (result != null) { 
    ((TextView)findViewById(R.id.label)).setText("Loading website"); 
    } else { 
    ((TextView)findViewById(R.id.label)).setText("Error"); 
    } 
    } 

}.execute(website_url);}} 
+0

감사합니다! :) 시도해보십시오 – JoyceM

+2

다른 사용자와 공헌 한 결과를 공유하십시오. –

0

경량

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_jsoupactivity); 
     final TextView tv = (TextView) findViewById(R.id.label); 

     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       String str; 
       try { 
        Document doc = Jsoup.connect(website_url).get(); 
        str = ""; 
       } catch (Exception e) { 
        str = ","; 
       } 
       final String finalStr = str; 
       tv.post(new Runnable() { 
        @Override 
        public void run() { 
         tv.setText(finalStr); 
        } 
       }); 
      } 
     }).start(); 

}

관련 문제