2

appwidget id に関連付けられた appwidget レイアウトを取得したいと考えています。

appwidget の Widget プロバイダー クラスでは、android ドキュメントは appwidget id を取得する簡単な方法を提供しています...

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;
    // Perform this loop procedure for each App Widget that belongs to this provider
    for (int i=0; i<N; i++) {
        int appWidgetId = appWidgetIds[i];


しかし、それらの ID では、それがどの appwidget プロバイダー (複数のウィジェット プロバイダーとレイアウト) からのものかを知ることはできません。

編集:ウィジェットプロバイダークラスではなく、サービスクラスを使用してウィジェットを更新しています。

サービス クラスでは、各 ID の appwidget レイアウトを取得して、remoteviews を使用してそのレイアウトを更新できるようにしたいと考えています。私はいくつかの異なる提案を試みましたが、どれもリモートビューで使用する必要がある価値を与えてくれませんでした. 例: "R.id.widget_layout" リモート

ビューで使用する正しい "int" 形式の appwidget ID から "R.id.widget_layout" のような値を取得するにはどうすればよいですか?

4

2 に答える 2

5

次の方法で、各 AppWidget の AppWidget レイアウト ID とプロバイダーに関する情報を取得できます。

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    for(int i=0; i<N; i++) {

        int appWidgetId = appWidgetIds[i];

        // you can use layoutId variable instead of R.id.widget_layout
        int layoutId = appWidgetManager.getAppWidgetInfo(appWidgetId).initialLayout;
        // String yourProvider will be something like .WidgetProvider2x2
        String yourProvider = appWidgetManager.getAppWidgetInfo(appWidgetId).provider.getShortClassName();

    }

}
于 2014-04-14T21:43:13.683 に答える