Re: [問題] 請問widget 計算機寫法

看板AndroidDev作者 (庫波)時間8年前 (2016/05/25 22:13), 8年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
AppWidget的構造跟Activity完全不同,Life cycle大概是: onEnabled-第一次放Widget上來時會呼叫,注意同一種Widget是可以同時放多個的 onUpdate-每個Widget放上來會跑一次, 之後依照updatePeriodMillis設定的時間會呼叫,最少30分鐘以上 onDeleted-每個Widget被移除時呼叫 onDisabled-最後一個Widget被移除時呼叫 基本上AppWidget沒辦法拿到View本體,所以能做的事很少 操作的話只能透過RemoteViews來做 然後觸發的事件也只能透過PendingIntent來發送Broadcast 在onUpdate中透過 RemoteViews remoteViews = new RemoteViews(PackageName, layout id); remoteViews.setOnClickPendingIntent(Button id, PendingIntent); remoteViews.setTextViewText(TextView id,current value); appWithetManager.updateAppWidget(appWidgetId, removeViews); 來設定按鈕事件跟顯示的數字 再去onReceive接,透過 AppwidgetManager appWidgetManager = AppWidgetManager.getInstance(context); ComponentName componentName = new ComponentName(package name,Widget class name); int[] appWidgetIds = appWidgetManager.getAppWidgetIds(componentName); 拿到參數可以用來呼叫onUpdate(context,appWidgetManager,appWidgetIds) 或是直接在BroadcastReceiver裡面做掉也不是不行 還有Widget本身的Life cycle也是由Broadcast維持的 所以Override掉onReceive時要小心一點,記得要call super ※ 引述《joyshe78904 (幾樓)》之銘言: : 雖然在一般Activity下可以寫出計算機 : 但是要在widget下呈現 就有點卡住了 : 在繼承AppWidgetProvider的情況 也無法使用findViewById : 自己有去google了一些教學 : 有搞懂可以用intent跳轉 : 不過還是不知道該如何呈現 按鈕計算的功能 : 有沒有大大可以指點一下!! : 或是哪裡有google的原生widget計算機的code可以參考呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.19.37 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1464185590.A.408.html ※ 編輯: cooper6334 (36.231.19.37), 05/25/2016 22:43:27

05/27 11:05, , 1F
感謝大大 我來研究一下~~!!
05/27 11:05, 1F
文章代碼(AID): #1NHRBsG8 (AndroidDev)
文章代碼(AID): #1NHRBsG8 (AndroidDev)