2011-03-30 50 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方法中的更新方法來處理。