2011-02-09 48 views
1

我正在研究一個包含窗口小部件的Android應用程序。應用程序的主界面是一個簡單的活動,但用戶可以在活動中執行的一些操作使得必須更新小部件 - 即運行其onUpdate方法。從應用程序的主要活動調用窗口小部件的onUpdate方法

如何從活動中觸發此方法?看看otherquestions,我已經能夠編寫改變它的佈局的代碼,但它似乎並沒有運行onUpdate(因爲我只剩下空的佈局,沒有在onUpdate期間添加的數據)。

非常感謝您的任何想法或代碼示例!

回答

9

我仍然很新到Android,但我做到了這一點與三個步驟:

首先,我把我的AppWidgetProvider.onUpdate的內容的方法(myUpdate(Context))。

其次,我推翻AppWidgetProvider.onReceive()看起來是這樣的:

public void onReceive(final Context context, final Intent intent) 
{ 
    super.onReceive(context, intent); 

    if (MY_PUBLIC_STATIC_STRING.equals(intent.getAction())) 
    { 
     myUpdate(context); 
    } 
} 

第三,從我的其他活動,我只是給一個通用的廣播與意圖設置的操作。

Intent updateWidgetIntent = new Intent(context, MyWidget.class); 
updateWidgetIntent.setAction(MyWidget.MY_PUBLIC_STATIC_STRING); 
context.sendBroadcast(updateWidgetIntent); 

這確實有,而不是漂亮的界面的onUpdate讓你不必自己從上下文和應用部件IDS找到AppWidgetManager的下側。所以我懷疑這是正確的做法。祝你好運。

myUpdate(上下文)開始這樣的:

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 
int[] appWidgetIds = 
    appWidgetManager.getAppWidgetIds(new ComponentName(context, this.getClass())); 
相關問題