Ste*_*vil 2 user-interface android android-appwidget
我确定我错过了一些东西,但我只是想用一个按钮和一个计数器来获取一个app小部件.每次我点击按钮,我都希望计数器更新1.
我已经设置了WidgetProvider的onUpdate()函数来向按钮注册一个挂起的事件,以便它启动一个服务来碰撞计数器numbver:
Intent active = new Intent(context, CounterService.class);
active.setAction(CounterService.COUNT);
PendingIntent pending = PendingIntent.getService(context, 0, active, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.CountButton, pending);
ComponentName component = new ComponentName(context.getPackageName(), KickCounterWidgetProvider.class.getName());
appWidgetManager.updateAppWidget(component, views);
Run Code Online (Sandbox Code Playgroud)
然后在服务CounterService :: onStart()函数中我计算计数(暂时存储在prefs中),然后尝试更新显示当前计数值的文本字段:
// ... bump the count here and store a string representation of it in currentCountString ...
RemoteViews remoteView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.widget);
remoteView.setTextViewText(R.id.CurrentKickCount, currentCountString);
// apply changes to widget
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
ComponentName component = new ComponentName(getApplicationContext().getPackageName(), KickCounterWidgetProvider.class.getName());
appWidgetManager.updateAppWidget(component, remoteView);
Run Code Online (Sandbox Code Playgroud)
明智地使用Logcat表示这一切都正常,字符串似乎没问题,但由于某种原因,对appWidgetManager.updateAppWidget()的调用似乎由于某种原因而无声地失败.
我不知道它是否相关,但是我第一次将小部件的实例添加到主屏幕,甚至按钮都不起作用(即,在提供程序中的onUpdate()中调用updateAppWidget()失败).小部件的后续实例似乎可以在提供程序中调用updateAppWidget(),但从不适用于该服务.
任何帮助将不胜感激.
来自:http: //code.google.com/p/android/issues/detail?id = 8889
将窗口小部件安装到刚刚擦除或新创建的AVD上时,appWidgetManager.updateAppWidget调用不会更新相应的
窗口小部件.正确接收意图,正常调用调用,但不会发生窗口小部件更新.如果重新启动AVD(在设备上安装或不安装小部件包),则在第一次非初始化初始化引导后问题就不再存在.
问题似乎存在于2.0和2.1上,在1.5,1.6和2.2上它表现得如预期的那样.