2011-03-30 48 views
0

在我的应用程序的主屏幕上,有一个TextView显示月份的条目数。这个数字仅在您从SQLiteDB添加/删除项目时发生变化。在窗口小部件中反映TextView

我想要做的是始终在我的小部件中反映这个数字。鉴于我只想在用户添加/删除某个项目时对其进行更新,请执行此操作的最佳方法是什么?

回答

1

当用户添加或删除项目时,您可以直接调用窗口小部件的onUpdate方法,也可以发送新的广播来触发小部件更新。然后在onUpdate中读取数据库中的计数并填充小部件UI。

编辑

这段代码可以让你从Activity

private void updateAllWidgets(){ 
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); 
    int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(this, MyWidget.class)); 
    if (appWidgetIds.length > 0) { 
     new MyWidget().onUpdate(this, appWidgetManager, appWidgetIds); 
    } 
} 
+0

更新你的widget我不是如何调用的onUpdate清楚。在我的主要活动中,我完成了:private AppWidget mAppWidget; mAppWidget.onUpdate(上下文,appWidgetManager,appWidgetIds,mValue);我添加了mValue来传递数字,但我不确定要为上下文设置什么,appWidgetManager和appWidgetIds – Roger 2011-03-30 16:07:33

+0

@Roger添加了一个代码示例 – 2011-03-30 18:02:07

0

您需要更新TextView的方法,然后从添加/删除项目的代码调用此方法。

有没有一种干净的方式告诉TextView总是随着数据库内容的改变而改变;最好在代码中找到可能发生这些更改的点并相应地处理它们。

请注意,您在其他活动中发生的数据库更改可以通过调用包含TextView的活动的onResume方法中的更新方法来处理。