2012-02-26 71 views
0

我需要在AppWidgetProvider中獲取特定的appWidgetId,而不是appWidgetIds []的一個包,而是用戶單擊的特定ID。如何在AppWidgetProvider中獲取appWidgetId?

我能得到它,在它的配置活動中,使用「intent.getExtra()。getInt(AppWidgetManager.APP_WIDGET_ID)說:」像504

但正是在這樣的AppWidgetProvider不同,我將不勝感激如果有人給我一個手,提前感謝。

public class WidgetBox extends AppWidgetProvider implements Widget { 

private int _widgetId = ?; // not appWidgetIds[] 

} 

回答

0

當調用widget生命週期方法時,您將獲得一個ID數組。

@Override 
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds) { 
    final int n = appWidgetIds.length; 
    for(int i = 0; i < n; i++) { 
     final int appWidgetId = appWidgetIds[i]; 
     // some logic here 
    } 
} 

,如果你需要調用一些動作,這是使用配置過程中掛起的意圖(或更高版本的更新)來完成: 您可以通過所提供的ID這樣簡單地重複

final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 
final Intent defineIntent = new Intent(context, YourTargetActivity.class); 
defineIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0 /* no request code */, defineIntent, 0); 
views.setOnClickPendingIntent(R.id.view_id, pendingIntent); 
+0

什麼這是appWidgetIDs嗎?爲什麼是一系列?我們爲什麼要爲appWidgetIds的所有元素執行相同的過程? – atasoyh 2013-02-28 07:35:22

+1

用戶可以多次部署相同的窗口小部件(可能具有不同的配置,例如在不同位置的日落)。該API提供onUpdate()與所有小部件的ID數組。 – Stefan 2013-02-28 16:07:13

相關問題