2013-11-14 118 views
0

我正在用Jsoup开发应用程序。问题是,当我在Getters的帮助下从其他课程调用它时,它不起作用。但是当我在单一活动中调用它时,它正在运行。我无法找到它为什么无法正常工作,因为它应该。 以下是包含所有活动的logCat文件。AsyncTask#1:执行doInBackground()时发生错误

logcat的

11-14 20:16:52.063: E/AndroidRuntime(1871): FATAL EXCEPTION: AsyncTask #1 
11-14 20:16:52.063: E/AndroidRuntime(1871): java.lang.RuntimeException: An error occured while executing doInBackground() 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at java.lang.Thread.run(Thread.java:856) 
11-14 20:16:52.063: E/AndroidRuntime(1871): Caused by: java.lang.IllegalArgumentException: Must supply a valid URL 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at org.jsoup.helper.Validate.notEmpty(Validate.java:102) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at org.jsoup.helper.HttpConnection.url(HttpConnection.java:57) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:27) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at org.jsoup.Jsoup.connect(Jsoup.java:73) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at com.example.frgbdf.jsoupAct$Parsee.doInBackground(jsoupAct.java:30) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at com.example.frgbdf.jsoupAct$Parsee.doInBackground(jsoupAct.java:1) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
11-14 20:16:52.063: E/AndroidRuntime(1871):  ... 4 more 

MainActivity

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Intent i = new Intent(getApplicationContext(), LineGraph.class); 
     startActivity(i); 
    } 
} 

LineGraph

public class LineGraph extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     jsoupAct mJsoupAct = new jsoupAct(); 
     String parseStrings; 
     parseStrings = mJsoupAct.getOutput(); 
     Log.d("xstring", parseStrings + ""); 
    } 
} 

jsoupAct

public class jsoupAct extends Activity { 
    String output = "00"; 
    String url; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     url = "www.google.com"; 
    } 

    public void mExecute() { 
     new Parsee().execute(); 

    } 

    public class Parsee extends AsyncTask<String, String, String> { 

     protected String doInBackground(String... params) { 
      try { 
       Document doc = Jsoup.connect(url).get(); 
       String body = doc.body().text(); 
       output = body.toString(); 
      } catch (IOException e) { 

       e.printStackTrace(); 
      } 
      return output; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(output); 
     } 

    } 

    public String getOutput() { 
     mExecute(); 
     return output; 
    } 

    public void setOutput(String output) { 
     this.output = output; 
    } 
} 
+0

MB网址开始活动时才会被调用? – Suvitruf

+0

尝试使用'http:// www.google.com'添加http部分 – Coderji

回答

3

你正在一个字符串本地jsoupAct activity指定URL。如果您尝试从其他活动进行访问,该字符串将为空。为了解决其移动字符串中的AsyncTask类中,它会工作

或空的构造函数添加到jsonAct活动和其分配的url值。 onCreate()仅当使用“http”而不是“www”使用startActivity()

2

您已经回答了自己的问题:

Caused by: java.lang.IllegalArgumentException: Must supply a valid URL 
    at org.jsoup.helper.Validate.notEmpty(Validate.java:102) 
    at org.jsoup.helper.HttpConnection.url(HttpConnection.java:57) 
    at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:27) 
    at org.jsoup.Jsoup.connect(Jsoup.java:73) 
    at com.example.frgbdf.jsoupAct$Parsee.doInBackground(jsoupAct.java:30) 
    at com.example.frgbdf.jsoupAct$Parsee.doInBackground(jsoupAct.java:1) 
    at android.os.AsyncTask$2.call(AsyncTask.java:287) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
    ... 4 more 
+1

重新发布logcat绝不是答案。 OP显然不知道为什么*错误正在发生或者如何解决。 – codeMagic

+0

是的。但是,这是一些如何指向我失踪的路线。 – Aexyn

相关问题