0

我試圖將多個視圖添加到AppWidget(主屏幕小部件)中的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事件? 我曾見過一些小工具,例如「Spiegel Online」 - 小工具(德語)或Market-Widget。

回答

-1

我找到了解決方案here。這工作很完美。

我只需要使用launchIntent.setAction("" + Math.random())來使每個意圖對系統而言都是唯一的。 (額外配件不會使Intent獨一無二,因爲Android不檢查它們是否不同)。

+0

這也不是保證是唯一的,也不是之實踐。應該按照arne.jans的答案 – Makibo 2013-07-30 15:07:56

3

一個簡單的解決方案不需要隨機岬是,你可以嵌入所有的臨時演員到這樣的數據串,使意圖獨特:

intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));