Re: [问题] 请问widget 计算机写法

楼主: cooper6334 (库波)   2016-05-25 22:13:07
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可以参考呢?
作者: joyshe78904 (几楼)   2016-05-27 11:05:00
感谢大大 我来研究一下~~!!

Links booklink

Contact Us: admin [ a t ] ucptt.com