AndroidWidget上的RemoteViews setViewVisibility

时间:2012-02-05 23:52:30

标签: java android widget visibility remoteview

在我的AppWidgetProvider中,我执行以下操作:

@Override
public void onReceive(Context ctx, Intent intent) {
    final String action = intent.getAction();
    if (action.equals(NEXTPAGE_ACTION)) {
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(ctx);
        RemoteViews rv = new RemoteViews(ctx.getPackageName(), R.layout.widget_layout);
        rv.setViewVisibility(R.id.page1, View.GONE);
        rv.setViewVisibility(R.id.page2, View.VISIBLE);
    final int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
    appWidgetManager.updateAppWidget(appWidgetId, rv);
    }
}

虽然我正在通过updateAppWidget更新布局,但更改并未真正反映在UI上。什么可能出错?非常感谢!

2 个答案:

答案 0 :(得分:11)

您是否尝试过使用INVISIBLE而不是GONE? Gone将删除视图,就好像它从未出现过一样。隐形会保持视图在布局中的位置,但会使其不可见。

 rv.setViewVisibility(R.id.page1, View. INVISIBLE);

答案 1 :(得分:1)

我对widget app有同样的问题。如果你这样,我会检测到 appWidgetId 错误。首次更新UI时,您必须将 appWidgetId 跟踪到静态变量。然后,我们可以将该变量用作更新UI的常见 appWidgetId

或者您可以在 onReceiver 功能中尝试以下代码:

final ComponentName provider = new ComponentName(context, this.getClass()); appWidgetManager.updateAppWidget(provider, views);

哪些观点是 RemoteViews

谢谢,抱歉我的英语。