2010-03-10 65 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