2014-04-06 3 views

답변

3

execute 메서드를 사용하여 ASynctask를 시작해야합니다.

코드를 사용하면 주 스레드에서 메서드를 호출하기 만하면됩니다. execute은 Asynctask에 대한 새 스레드를 작성합니다.

public void initWebView(String link) { 
    ThreadParse parse = new ThreadParse(); 
    parse.execute(link); 
} 

당신이 정말doInBackground의 UI에 뭔가를 할 필요가 당신이

catch (IndexOutOfBoundsException ex){ 
    currentPage = 1; 
    totalPages = 1; 
    Toast.makeText(Thread.this, "You are on " + currentPage + " of " + totalPages, Toast.LENGTH_LONG).show(); 
    webview.loadDataWithBaseURL("http://netdna.bootstrapcdn.com/bootstrap/2.3.2/css/bootstrap.min.css", e.html(), "text/html", "utf-8", null); 
    return; 
} 
여기

, 당신을 일을 수 있도록 내가 예제로이 코드 블록을 taked runOnUIThread

사용해야하는 경우 해야한다

catch (IndexOutOfBoundsException ex){ 
    YourTopActivity.this.runOnUiThread(new Runnable() 
    { 
     currentPage=1; 
     totalPages=1; 
     Toast.makeText(Thread.this,"You are on "+currentPage+" of "+totalPages,Toast.LENGTH_LONG). 

     show(); 

     webview.loadDataWithBaseURL("http://netdna.bootstrapcdn.com/bootstrap/2.3.2/css/bootstrap.min.css",e.html(),"text/html","utf-8",null); 
    }); 
    return; 
} 

UI 요소와 함께 작동하는 다른 것들과 동일합니다.

runOnUiThread.

여기 YourTopActivity는 당신이 ActivityrunOnUiThread 방법을 사용해야하기 때문에 필요하고 당신은 Asynctask 클래스 내부에있다. java.lang.RuntimeException가 : 루퍼를 호출하지 스레드 내부 핸들러를 만들 수 없습니다

어쨌든, 당신은 내가 내가 "에 의한 가지고 있다고했을 때 onPostExecuteonPreExecute

+0

를 사용하도록 코드를 다시 생각해야한다. prepare() "토스트 만들기를 시도 할 때 오류가 발생했습니다. – user2833131

+1

다른 스레드에서 UI를 편집 할 수 없기 때문에 발생합니다. UI를 사용하여 작업해야 할 때마다 runOnUIThread (또는 더 좋으며 UI 스레드에서 호출되는 onPostExecute/onPreExecute 사용) –

+0

아니요, 2.3 이상을 사용하고 있습니다. runOnUIThread를 사용하는 방법에 대한 예를 들어 줄 수 있습니까? 안드로이드에 익숙하지 않습니다. – user2833131

관련 문제