我正在研究一個包含窗口小部件的Android應用程序。應用程序的主界面是一個簡單的活動,但用戶可以在活動中執行的一些操作使得必須更新小部件 - 即運行其onUpdate方法。從應用程序的主要活動調用窗口小部件的onUpdate方法
如何從活動中觸發此方法?看看otherquestions,我已經能夠編寫改變它的佈局的代碼,但它似乎並沒有運行onUpdate(因爲我只剩下空的佈局,沒有在onUpdate期間添加的數據)。
非常感謝您的任何想法或代碼示例!
我正在研究一個包含窗口小部件的Android應用程序。應用程序的主界面是一個簡單的活動,但用戶可以在活動中執行的一些操作使得必須更新小部件 - 即運行其onUpdate方法。從應用程序的主要活動調用窗口小部件的onUpdate方法
如何從活動中觸發此方法?看看otherquestions,我已經能夠編寫改變它的佈局的代碼,但它似乎並沒有運行onUpdate(因爲我只剩下空的佈局,沒有在onUpdate期間添加的數據)。
非常感謝您的任何想法或代碼示例!
我仍然很新到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()));