2011-05-21 101 views
0

我有一個包含WebView的佈局和一個以其爲中心的ProgressBar。進度條需要顯示並且保存爲程序(當網頁內容加載時)。但是,使用loading.setVisibility(View.VISIBLE);將ProgressBar設置爲可見,會導致逼近。如果ProgressBar默認是可見的,那麼它工作正常。如果需要,我會粘貼所有適當的代碼,但我懷疑我正在做一些根本性的錯誤。更改ProgressBar的可見性會導致關閉

(應該有forceclose標籤,但沒有它,也不存在forceclose,我不能創建它。)

好吧,代碼。該setVisibility很簡單:

public void nowLoading() { 
     loading.setVisibility(View.VISIBLE); 
    } 

nowLoading叫...通過JavaScript,對web視圖addJavascriptInterface。啊...我想象WevView是在一個不同的線程。我如何解決這個問題?

+0

請上傳你上logcat的除外。 – 2011-05-21 21:19:13

+0

我認爲這是你想要的:http://pastebin.com/2KYUdjYB – Dataflashsabot 2011-05-21 21:23:25

回答

2

您可能正在改變來自錯誤線程的可見性。您是否在以Thread.start()開始的新線程中進行可見性更改?

編輯:使用Handler(請參閱http://developer.android.com/reference/android/os/Handler.html)。將消息發送到處理程序,然後從處理程序執行可見性更改。或使用View.post(請參閱http://developer.android.com/reference/android/view/View.html#post%28java.lang.Runnable%29)。

+0

沒有。我如何確保我處於正確的線程?如果我沒有自己創建一個,有沒有辦法讓我錯誤?我對Android非常陌生。 – Dataflashsabot 2011-05-21 21:19:34

+0

發表一番代碼:解決它的最簡單的方法。您調用'setVisibility'的整個方法以及任何其他調用該方法的方法(如果它不是像'onCreate'這樣的生命週期方法)。 – Femi 2011-05-21 21:22:04

+0

我認爲這是你想要的: – Dataflashsabot 2011-05-21 21:22:24

0

試試這個:

YourActivity.runOnUIThread(new Runnable(){ 
    @Override 
    public void run(){ 
     loading.setVisibility(View.VISIBLE); 
    } 
});