叫theres一個錯誤下的AsyncTask法的getText必須從UI線程
edtUrl.getText().toString();
我想我有一個構造函數添加到的AsyncTask它會使用「方法的getText必須從UI線程調用」兩個字符串然後在創建任務時發送它們?有人有主意嗎?使用另一個SO問題就是這樣的信息嘗試,但沒有奏效
private class ParseURL extends AsyncTask<String, Void, String> {
private String siteUrl;
@Override
protected String doInBackground(String... strings) {
StringBuffer buffer = new StringBuffer();
//EditText edtUrl = (EditText) findViewById(R.id.edtURL);
//String siteUrl = edtUrl.getText().toString();
try {
Log.d("JSwa", "Connecting to ["+strings[0]+"]");
Document doc = Jsoup.connect(strings[0]).get();
Log.d("JSwa", "Connected to ["+strings[0]+"]");
// Get document (HTML page) title
String title = doc.title();
Log.d("JSwA", "Title ["+title+"]");
buffer.append("Title: " + title + "\r\n");
try {
doc = Jsoup.connect(siteUrl)
.userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
.referrer("http://www.google.com")
.timeout(1000 * 5) //it's in milliseconds, so this means 5 seconds.
.get();
} catch (Throwable t) {
t.printStackTrace();
}
Elements tableElements = doc.select("td");
for (Element td : tableElements) {
buffer.append("TT [" + td + "] \r\n");
Log.d("JSwA", "TT [" + td + "]");
}
這是我的onClick(),均低於SITEURL下即時得到錯誤。
@Override
public void onClick(View view) {
// String siteUrl = edtUrl.getText().toString();
siteUrl = "http://www.w3schools.com/html/html_tables.asp";
(new ParseURL()).execute(new String[]{siteUrl});
這是我嘗試使用的findViewsById()方法。
protected void onPreExecute() {
super.onPreExecute();
EditText edtUrl = (EditText) findViewById(R.id.edtURL);
siteUrl = edtUrl.getText().toString();
}
錯誤出現在試圖將這一代碼到我的項目,這是我的parseURL方法的一部分:
try {
doc = Jsoup.connect(siteUrl)
.userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
.referrer("http://www.google.com")
.timeout(1000 * 5) //it's in milliseconds, so this means 5 seconds.
.get();
} catch (Throwable t) {
t.printStackTrace();
}
您不應該以任何方式與後臺線程交互UI。這並不是你的錯誤,而只是一個小小的問題。 – zgc7009
您可以創建將在主線程上執行的runnables - http://stackoverflow.com/a/11125271/2363967 –
你會得到什麼錯誤? –