作者darkk6 (Mr. Pan)
看板AndroidDev
标题Re: [问题] Widget 的 onUpdate
时间Mon May 27 18:50:21 2013
问题解决了~
感谢 gpc 大的帮忙,知道问题出在哪边了 orz
还是无法确定是否与 Flag 有关(我想应该是有的)
最主要会发生这个问题是网路上所说 API Level 14 之後 RemoteView
可以 Update 只部分。
这点确实没错:
void methodA(){
RemoteViews rv=new RemoteViews(
/*略*/);
rv.setOnClickPendingIntent(
R.id.btn1,btn1PendingIntent);
/* bla bla bla */
ComponentName thisWidget=
/*略*/;
AppWidgetManager manager=AppWidgetManager.getInstance(context);
manager.updateAppWidget(thisWidget, rv);
methodB();
}
void methodB(){
RemoteViews rv=new RemoteViews(
/*略*/);
rv.setOnClickPendingIntent(
R.id.btn2,btn2PendingIntent);
/* bla bla bla */
ComponentName thisWidget=
/*略*/;
AppWidgetManager manager=AppWidgetManager.getInstance(context);
manager.updateAppWidget(thisWidget, rv);
}
这样下来确实 btn1 和 btn2 都会有所反应,没有问题
但是在 launcher 重新启动後,widget 只会剩下 btn2 有反应
因为我的写法中在按下主要的底个些按钮後会去 reset 另一个按钮的 pendingIntent
用的就是上面那种方式,所以会造成後来按钮都没反应(只有最後一个有反应)
只要在每次 update 之前,重设全部 btn 的 pendingIntent 就解决了
希望如果有遇到相同问题的人可以帮到忙~ 也再次感谢 gpc 大~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.121.205.161
1F:推 gpc:不是都要重设吗 我老古板 都只用最旧的API...XD 05/28 12:36
2F:→ gpc:婀 没错 这是很合理的行为 因为launcher gg 05/28 12:37
3F:→ gpc:所以之前设过的pending intent已经清除 必须重设 05/28 12:37