2010-03-10 36 views
6

我遇到了一個有趣的情況,在一個應用程序的Widget使用進度......在文檔中(http://developer.android.com/guide/topics/appwidgets/index.html)說,進度是支持widget類...進度的AppWidget

我沒有問題得到ProgressBar顯示在我的App Widget中,但問題是我希望它只在後臺處理髮生時作爲視覺反饋顯示給用戶。

在ImageViews我通過RemoteViews.setViewVisibility()做這一切工作正常。但是,通過ProgressBar,我得到一個異常,表示ProgressBar不能使用此方法。

這是故意還是這是一個錯誤?有什麼辦法可以解決這個問題嗎?

回答

15

更簡單的想法,就是把進度條的一些容器(比如線性佈局)和內部顯示/隱藏容器。

+0

我其實剛剛切換到在我的應用程序的最新UI更新中使用此方法... – Justin 2011-12-27 14:09:21

10

這可能是一個錯誤。您需要在Android本身的Java源代碼中使用特定的註釋(@RemotableViewMethod),以便通過RemoteViews將方法標記爲可用。 View對此有setVisibility(),但ProgressBar覆蓋該方法,並且在其自己的版本上沒有註釋。如果@RemotableViewMethod未被繼承,並且覆蓋「撤銷」了註釋,那麼這將解釋您看到的症狀。

解決方法是在更新應用程序窗口小部件時創建對象RemoteViews時,使用兩個應用程序窗口小部件佈局並選擇一個您需要的窗口(帶或不帶ProgressBar)。

我會做一個筆記來嘗試複製這個,如果我看到相同的東西,我會在Android issue tracker上發佈一個問題。

+0

感謝您的信息和解決方法! 就像一個供參考,我目前正在編譯對1.5 SDK,所以它可能已被修復在更高版本。 – Justin 2010-03-10 14:43:19

+0

可能不會,因爲我在編寫答案時正在查看更多當前代碼(通過Google代碼搜索)。 – CommonsWare 2010-03-10 15:33:50

+0

它仍然不能從API級別8開始工作。但是使用額外佈局的提示正在工作:) – 2012-04-30 07:21:48