2015-05-14 114 views
1

我正在做一個有一個stackView的小部件,我在裏面添加了一個RemoteViewFactory的位圖(圖像)。使用setPendingIntentTemplate打開活動

我的問題是當我想爲每個圖像做一個onClickPendingIntent()(我在stackView裏面)。我知道我必須改用setPendingIntentTemplate(),但我不知道如何在按下某個小部件的圖像時進入Activity。

那麼這就是我裏面onUpdate()從控件類創建掛起的意圖模板:

Intent templateIntent = new Intent(Intent.ACTION_VIEW); 
     templateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
     PendingIntent templatePendingIntent = PendingIntent.getActivity(
       context, 0, templateIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

     views.setPendingIntentTemplate(R.id.widget_stack_view, 
       templatePendingIntent); 

這是我在RemoteViewsFactory類來處理掛起的意圖模板:

public RemoteViews getViewAt(int index){ 
    RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.grid_item_layout); 

    rv.setImageViewBitmap(R.id.image, images.get(index).getImage()); 

    Intent fillInIntent = new Intent(); 
    fillInIntent.putExtra(Intent.EXTRA_TEXT, images.get(index).getTitle()); 
    rv.setOnClickFillInIntent(R.id.image, fillInIntent); 


    return rv; 

} 

到目前爲止,fillInIntent.putExtra(Intent.EXTRA_TEXT, images.get(index).getTitle());這個fillInIntent.putExtra(Intent.EXTRA_TEXT, images.get(index).getTitle());正在通過電話向我展示一個「使用完整操作」,您可以在其中選擇要打開哪個應用程序,但是如果您看到我在putExtra()中放置的是String。但我要的是一個開放的活動,然後用putExtra()一個圖像(images.get(index).getImage())傳遞是一個位圖

回答

2

我想通了,什麼是錯的:

Intent templateIntent = new Intent(context, Activity_I_want_to_open.class); 
templateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
    PendingIntent templatePendingIntent = PendingIntent.getActivity(
      context, 0, templateIntent, 0); 

接着,我也沒必要FLAG_UPDATE_CURRENT,因爲我想更新什麼。

而在RemoteViews側:

Intent fillInIntent = new Intent(); 
rv.setOnClickFillInIntent(R.id.image, fillInIntent); 

我並不需要putExtra(),因爲我沒有將數據發送到其他活動。