作者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
推 gpc:不是都要重設嗎 我老古板 都只用最舊的API...XD 05/28 12:36
→ gpc:婀 沒錯 這是很合理的行為 因為launcher gg 05/28 12:37
→ gpc:所以之前設過的pending intent已經清除 必須重設 05/28 12:37