0

何度も試した後、もう一度質問することにしました。最後の質問で、誰かが Jsoup を調べるべきだと言いました。いくつかのコードを書きましたが、うまくいきません。アンドロイドアプリです。しかし、それは完全にクラッシュします。エラーメッセージとともに:

残念ながら、(appname) は停止しました

完全なエラー メッセージを表示する

<div> からテキストを抽出するための私のコード:

 public void ButtonClick(View view) throws IOException {
    Document doc = dereference("here is my url");
    String text = extractContent(doc);
    updateUI(text);
}

private Document dereference(String uri) {
    Connection connection = Jsoup.connect(uri);
    return connection.get();
}

private String extractContent(Document doc) {
    Elements divs = doc.select("div.onlinestatus");
    return divs.text();
}

private void updateUI(String text) {
    TextView tv = (TextView)findViewById(R.id.textView1);
    tv.setText(text);
}

URL からの入力:

<html><!-- [...] --><body>
    <div class='onlinestatus'>Server ist online! <br /></div>
</body></html>

誰かが間違いを見つけることができますか?

編集:これらすべての操作を別のスレッドで実行すると、別のエラーが発生します。エラー ログとコードはここにあります。

4

1 に答える 1

0

結局のところ、これは Jsoup の質問ではありません。

エラー ログ (最初の行) からエラーを検索すると、次のようになります。

NetworkOnMainThreadException

android NetworkOnMainThreadException」をグーグル検索すると、android 開発者リファレンスのページが表示されます

アプリケーションがメイン スレッドでネットワーク操作を実行しようとしたときにスローされる例外。

これは、コードを別のスレッドに移動しようとした以前の試みを説明し、異なる結果を生み出すように見えました. Android デベロッパー リファレンスで提案されているレスポンシブの設計に関するページ
をご覧ください。それはあなたに答えを与えるはずです。

次に失敗する可能性があるのは、UI を作成したスレッドですべての UI 変更を行う必要があることです。ここで取得した CalledFromWrongThreadException は、何が問題だったかを正確に示しています。そのエラーを調べると、このような質問と回答が表示されます。

それに問題がある場合は、問題が StackOverflow でまだカバーされていない場合は、新しい質問をすることをお勧めします (ただし、カバーされていると思います!)

于 2012-11-02T17:13:14.973 に答える