Có giao diện here và cuộn đến tiêu đề phụ Thêm hành vi vào từng mục riêng lẻ.
Bạn cần phải chắc chắn rằng bạn gọi cả setPendingIntentTemplate()
từ AppWidgetProvider
bạn vàsetOnClickFillInIntent()
từ thực hiện RemoteViewsService.RemoteViewsFactory
của bạn.
Ví dụ:
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;
}
}
Có một ví dụ thuyết phục hơn trong mẫu StackWidget mà là trong SDK samples, mặc dù tôi thấy nó hơi khó để tìm (xem here cho hướng dẫn). Nó tạo ra một ý định để hiển thị một thông báo Toast, nhưng nó sử dụng cùng một mã.
Nguồn
2013-02-11 12:12:03
tôi nghĩ điều này dễ dàng hơn: http://stackoverflow.com/a/20774402/878126 –
Điều duy nhất hiệu quả đối với tôi. Cảm ơn bạn – IHeartAndroid
có vẻ như nó được tất cả các dữ liệu trong ListView vì vậy khi đi đến các hoạt động nó không trả lại chính xác thêm bạn putted. Làm thế nào để giải quyết điều này? – natsumiyu