0

私は最近 Android でプログラムの開発を始めましたが、この単純なコードには小さな問題があります。Web サイトのタイトルを解析して文字列に保存しようとしていますが、これまでのところ成功していません。Async でやっていないからですか?それとも、一緒に別の問題になる可能性がありますか?

http://s9.postimg.org/ikycjit9b/android.png

public class MainActivity extends Activity implements OnClickListener {

    private Button btnSearch;
    private EditText editTextCarReg;

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

        //-------------------------------------------------
        btnSearch = (Button) findViewById(R.id.btnSearch);
        btnSearch.setOnClickListener(this);
        //------------------------------------------------
        editTextCarReg = (EditText) findViewById(R.id.editTextRegistration);
        editTextCarReg.setOnClickListener(this);

    }


    public boolean onCreateOptionsMenu(Menu menu) 
    {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    public void example() throws IOException
    {
        Document doc = Jsoup.connect("http://http://9gag.com/").get();
        String title = doc.title();
    }

    public void onClick(View v)
    {
        if(v.getId() == btnSearch.getId())
        {
            try {
                example();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }


}
}
4

2 に答える 2

0
public static int SDK_INT = android.os.Build.VERSION.SDK_INT;

リクエストの前にこのコードを書いてください

if (SDK_INT >= 10) {
                ThreadPolicy tp = ThreadPolicy.LAX;
                StrictMode.setThreadPolicy(tp);
            }

asynctask を使用することをお勧めします。

于 2013-10-12T13:18:59.890 に答える
0

ログから:

android.os.NetworkOnMainThreadException

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

AsyncTaskで実行Jsoup logicします。

(あなたも追加したことを確認してください<uses-permission android:name="android.permission.INTERNET"/>

次のように書くことができます:

class JsoupTask extends AsyncTask<String, Void, Void> {

    private Exception exception;

    protected void doInBackground(String... url) {
       Document doc = Jsoup.connect(url).get();
       String title = doc.title();
       ...

    }

    protected void onPostExecute(RSSFeed feed) {
        // here you can update your UI thread through Handler, for example
    }
}

そして、次のように呼び出します。

new JsoupTask().execute(url);
于 2013-10-12T12:55:32.313 に答える