在Widget中反映TextView

时间:2011-03-30 15:42:43

标签: android

在我的应用程序的主屏幕上,有一个TextView显示该月的条目数。只有在从SQLiteDB添加/删除项目时,此编号才会更改。

我想要做的是始终在我的小部件中反映这个数字。鉴于我只想在用户添加/删除项目时更新它,那么最好的方法是做什么?

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

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

当db内容发生变化时,没有一种干净的方法可以告诉TextView始终更改;最好在代码中找到可能发生此类更改的点并相应地处理它们。

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