作者cooper6334 (库波)
看板AndroidDev
标题Re: [问题] 请问widget 计算机写法
时间Wed May 25 22:13:07 2016
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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1464185590.A.408.html
※ 编辑: cooper6334 (36.231.19.37), 05/25/2016 22:43:27
1F:推 joyshe78904: 感谢大大 我来研究一下~~!! 05/27 11:05