2013-11-14 3 views
0

Я разрабатываю приложение с Jsoup. Проблема в том, что он не работает, когда я вызываю его из другого класса с помощью Getters. Но он работает, когда я вызываю его в Single Activity. Я не могу найти, почему именно он не работает, как и должно. Вот файлы 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); 
    } 
} 

рёберный граф

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 url with "http" not "www"? – Suvitruf

+0

попробуйте использовать 'http: // www.google.com', чтобы добавить http-часть – Coderji

ответ

3

Вы с указанием URL в строке местного к jsoupAct activity. Строка будет пустой, если вы попытаетесь получить доступ к другим видам деятельности. Для того, чтобы решить ее переместить строку внутри класса AsyncTask и он будет работать

Или добавьте пустой конструктор в jsonAct деятельности и присвоить значение url в нем. onCreate() вызывается только в том случае, если для начала деятельности используется 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

. Лог-код перерасчета не является ответом. Очевидно, что ОП не знает * почему * возникает ошибка или как ее исправить. – codeMagic

+0

Правда. Но некоторые из них указывают мне на ту линию, которую мне не хватает. – Aexyn

Смежные вопросы