2013-06-29 21 views
1

我是新使用jsoup,我只想問,如果我必須使用jsoup碼內的公共靜態無效的主要是我見過的在網絡上我的研究和。我可以在任何其他方法中使用它嗎?另外我遇到了Jsoup.connect()。get()的問題。當我運行它時,我的應用程序總是停止。我已經將android.permission.Internet添加到我的AndroidManifest.xml中。我閱讀食譜,並決定開始解析文檔,我仍然產生相同的結果 - 不幸的是,應用程序已停止。我的minsdkversion是8,我的目標是15。請耐心等待。的Android - Jsoup.connect()得到()

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(); 

}