2012-02-26 9 views
0

私は特定のappWidgetIdをAppWidgetProviderで取得する必要があり、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

ウィジェットライフサイクルメソッドが呼び出されると、Idの配列が取得されます。あなたは、単にこのような提供のIdsを反復処理することができ :

@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 
    } 
} 

あなたには、いくつかのアクションを呼び出すために必要がある場合、これはコンフィギュレーション(またはそれ以降の更新)中に、保留中の意図を使用して行われます:

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

+1

ユーザーは、同じウィジェットを複数回配備することができます(設定が異なる場合があります。たとえば、異なる場所に日没するなど)。 APIは、すべてのウィジェットのIDの配列をonUpdate()に提供します。 – Stefan

関連する問題