0
我是Android新手,所以每一個簡單的事情似乎都是一座山。
我正在實現一個應用程序(與背景接收器)聽電話和做些事情:這個工作,好的。
我試着添加一個小部件(從接收器更新)顯示一些狀態,但這不起作用,小部件沒有更新。從後臺接收器更新Widget
這是我的小部件的一部分:它啓動時顯示正確的狀態。
public class BlacklistWidget extends AppWidgetProvider {
RemoteViews remote;
ComponentName provider;
Context context;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
// create the remote view
remote = new RemoteViews(context.getPackageName(), R.layout.widget);
provider = new ComponentName(context, BlacklistWidget.class);
this.context = context;
Resources r = context.getResources();
String[] usage_arr = r.getStringArray(R.array.pref_usage_array);
int usage = Prefs.getUsage();
Utils.Log("Widget onUpdate: " + usage);
// remote.setImageViewResource(R.id.icon_usage,
remote.setTextViewText(R.id.usage, usage_arr[usage]);
appWidgetManager.updateAppWidget(provider, remote);
}
}
當接收器改變靜態類的狀態,調用此方法:
public static void setUsage(int usage) {
Usage = USAGE.values()[usage];
try {
Resources r = pcontext.getResources();
String[] usage_arr = r.getStringArray(R.array.pref_usage_array);
remoteViews.setTextViewText(R.id.usage, usage_arr[usage]);
Utils.Log("Widget updated with " + usage);
} catch (Exception e) {
e.printStackTrace();
}
}
正如你所看到的,用於更新部件代碼是()包含在窗口更新一樣。
沒有發生異常,文本發送更新是正確的..但小部件TextView保持不變。
在清單插件定義爲foolows:
<receiver android:name=".BlacklistWidget" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
我在做什麼錯?
有沒有更好的方法來達到我的目標?
非常感謝。
非常感謝:加入\t \t \t'setWithget'在'setUsage'結尾''appWidgetManager.updateAppWidget'提供程序!這是在我的眼睛下,但我沒有看到它。再次感謝 – Marco