0

私はAppWidget(Homescreenウィジェット)にあるViewFlipperに複数のビューを追加しようとしています。このコードは正常に動作しますAndroid Appwidget:ViewFlipperのRemoteViewsのためのaddOnClickPendingIntent

for (Item item : list) { 
    RemoteViews rv = new RemoteViews(getPackageName(), 
      R.layout.widget_item); 

    rv.setTextViewText(R.id.txtTitle, item.getTitle()); 

    Intent launchIntent = new Intent(this, ActItemViewer.class); 
    launchIntent.putExtra("id", item.getId()); 

    PendingIntent pendingIntent = PendingIntent.getActivity(
      this, id, launchIntent, 0); 
    rv.setOnClickPendingIntent(R.id.txtTitle, pendingIntent); 

    views.addView(R.id.viewFlipper, rv); 
} 

、すべての項目が私のウィジェットに表示されます: はここに私のコードです。 しかし、ViewFlipperの項目をクリックすると、ActItemViewerは常に同じ "id"で開きます。だから私は最初のPendingIntentだけが設定されていると思います。

ViewFlipperのすべての子に対して異なるonClick-Eventsを持つ方法はありますか? 私は「Spiegel Online」-Widget(ドイツ語)やMarket-Widgetなど、この機能を持つウィジェットをいくつか見てきました。

答えて

-1

解決策が見つかったhere。これは完璧に動作します。

私はそれぞれのインテントをシステム固有のものにするためにlaunchIntent.setAction("" + Math.random())を使用する必要がありました。 (エクストラはインテントをユニークにしない。なぜなら、アンドロイドは彼らが違うかどうかをチェックしないからだ)。

+0

どちらこれはユニークな、また実用的であることが保証されます。 1つはarne.jansの答えに従ってください – Makibo

3

ランダムネスを必要としない簡単に解決策は、あなたが意図一意にするために、このようなデータ列にすべてのエクストラを埋め込むことができるということです。

intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); 
関連する問題