Obejrzyj here i przejdź do podpozycji Dodawanie zachowania do poszczególnych pozycji.
Musisz upewnić się, że zarówno setPendingIntentTemplate()
zadzwonić ze swojego AppWidgetProvider
isetOnClickFillInIntent()
od implementacji RemoteViewsService.RemoteViewsFactory
.
Na przykład:
public class Widget extends AppWidgetProvider {
// ...
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for(int i = 0; i < appWidgetIds.length; i++){
RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent startActivityIntent = new Intent(context, myActivity.class);
PendingIntent startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget.setPendingIntentTemplate(R.id.list_view, startActivityPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], widget);
// ...
}
}
public class WidgetAdapter implements RemoteViewsService.RemoteViewsFactory {
// ...
@Override
public RemoteViews getViewAt(int position) {
RemoteViews widgetRow = new RemoteViews(context.getPackageName(), R.layout.widget_row);
Intent fillInIntent = new Intent();
fillInIntent.putExtra(Widget.EXTRA_LIST_VIEW_ROW_NUMBER, position);
widgetRow.setOnClickFillInIntent(R.id.list_view_row, fillInIntent);
// ...
return row;
}
}
Jest bardziej rozstrzygające przykład w próbce StackWidget który jest w SDK samples, chociaż uważam, że to trochę trudne do znalezienia (patrz here dla kierunków). Tworzy intencję, aby pokazać wiadomość Toast, ale używa tego samego kodu.
Myślę, że to jest łatwiejsze: http://stackoverflow.com/a/20774402/878126 –
Jedyną rzeczą, która zadziałała dla mnie. Dziękuję – IHeartAndroid
wygląda na to, że dostaje wszystkie dane z ListView, więc po przejściu do działania nie zwraca poprawnego dodatkowego, które podałeś. Jak rozwiązać ten problem? – natsumiyu