android widget无法点击问题

来源:互联网 发布:上海华讯网络笔试 编辑:程序博客网 时间:2024/06/07 05:22

RemoteViews views = new RemoteViews(mContext.getPackageName(), R.layout.widget);

view.setXXXX();

PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
views.setOnClickPendingIntent(R.id.widget, pendingIntent);

AppWidgetManager awg = AppWidgetManager.getInstance(mContext);
awg.updateAppWidget(new ComponentName(mContext, QQPlayWidgetProvider.class), views);


这个为widget设置了点击事件处理, 但是后来只想更新部分UI, 不想改变点击事件处理, 于是采用了下面的更新方式:

RemoteViews views = new RemoteViews(mContext.getPackageName(), R.layout.widget);

view.setXXXX();

AppWidgetManager awg = AppWidgetManager.getInstance(mContext);
awg.updateAppWidget(new ComponentName(mContext, QQPlayWidgetProvider.class), views);


这样的话会将之前的:

PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
views.setOnClickPendingIntent(R.id.widget, pendingIntent);

这个操作冲掉, 导致无法点击, 所以每次更新时需要将对views的所有设置都写一遍, 

RemoteViews views = new RemoteViews(mContext.getPackageName(), R.layout.widget);

view.setXXXX();

PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
views.setOnClickPendingIntent(R.id.widget, pendingIntent);

AppWidgetManager awg = AppWidgetManager.getInstance(mContext);
awg.updateAppWidget(new ComponentName(mContext, QQPlayWidgetProvider.class), views);

保证每次更新都能将所有的操作更新