ViewFlipper
でバックアップされたコレクションウィジェットを構築していて、adding behavior to individual itemsのAndroidドキュメントに従うときに不具合に遭遇しました。ViewFlipperウィジェットの個々の要素でクリックリスナーを設定する
私は、このモックアップに示すように、その前と次のビューにViewFlipper
を移動する2つの矢印を作成したい:私は次のコードとを持って、私のWidgetService
年代getViewAt()
方法で
を意図に塗りつぶしを作成します。
final Intent fillInIntent = new Intent();
final Bundle bundle = new Bundle();
bundle.putInt(WidgetProvider.EXTRA_ID, mWidgetItems.get(position));
fillInIntent.putExtras(bundle);
remoteViews.setOnClickFillInIntent(R.id.btn_widget_next, fillInIntent);
remoteViews.setOnClickFillInIntent(R.id.btn_widget_previous, fillInIntent);
そして、私のWidgetProvider
に私はこれがあります。
// Adding collection list item handler
final Intent onItemClick = new Intent(context, WidgetProvider.class);
onItemClick.setAction(NAVIGATE);
onItemClick.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id)
onItemClick.setData(Uri.parse(onItemClick.toUri(Intent.URI_INTENT_SCHEME)));
final PendingIntent onClickPendingIntent = PendingIntent
.getBroadcast(context, id, onItemClick,
PendingIntent.FLAG_UPDATE_CURRENT);
rv.setPendingIntentTemplate(R.id.widget_view_flipper, onClickPendingIntent);
ここで私がデザイン上混乱しているのは、ボタンごとにsetOnClickFillInIntent
と呼ぶはずです。それぞれのボタンにインテントを設定する場合は、WidgetProvider
のonUpdate
メソッドでクリックされたボタンを特定する方法が必要です(これはすべて、ViewFlipper
のビューの位置です)。私は残念なことに複数のアクションに対してクリックリスナーを使用するウィジェットの例を見つけることができませんでした。
はいくつかのフィードバックを与えたいと思った:あなたがにリンクされたテキストは、あなたのRemoteViewsFactoryがcollection.Thisに各アイテムでフィルイン意図を設定する必要があります」と言うすることが可能になります特定のアイテムの個々のオンクリックアクションを区別することができます。だから私はあなたがそのアイテムのようにボタンの塗りつぶしインテント(アイテムの子である)を設定することはできないと思う。 – 0X0nosugar
@ 0X0nosugar見ていただきありがとうございます。あなたがドキュメントの通りだと思われます。私は、しかし、複数のボタンでViewFlipperを使用するウィジェットの例があります。ソースコードにピークが出るのであれば:( –