在我的应用程序的主屏幕上,有一个TextView显示该月的条目数。只有在从SQLiteDB添加/删除项目时,此编号才会更改。
我想要做的是始终在我的小部件中反映这个数字。鉴于我只想在用户添加/删除项目时更新它,那么最好的方法是做什么?
答案 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
方法中调用更新方法来处理在其他活动中发生的对数据库的更改。