Я создаю виджет для своего приложения. Я начал с примера со следующей страницы.Как добавить несколько экземпляров виджета и обновить их отдельно?
http://www.androidauthority.com/create-simple-android-widget-608975/
Этот код с этой страницы.
public class SimpleWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int count = appWidgetIds.length;
for (int i = 0; i < count; i++) {
int widgetId = appWidgetIds[i];
String number = String.format("%03d", (new Random().nextInt(900) + 100));
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.simple_widget);
remoteViews.setTextViewText(R.id.textView, number);
Intent intent = new Intent(context, SimpleWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.actionButton, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
}
Я изменил код для своих собственных целей (обновляется несколько представлений со случайным текстом), и это работает для одного виджета. Однако, когда я добавляю второй виджет, обновляется только второй виджет, выбираю ли я первый или второй виджет. Я смотрел на другие страницы и смотрел видео весь день, пытаясь исправить это, но ничего не улучшилось, чем этот код.
Чтобы отладить, я скопировал этот код напрямую, изменив только макет и виды, чтобы увидеть, будет ли он работать. Это не так; та же проблема первого виджета, который не обновляется, возникает при добавлении второго виджета. На странице, на которой я связан, показано видео, в котором виджеты работают. Что может быть неправильным?
Кроме того, страница говорит, что если вы измените
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
в
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
только тогда виджет нажал на обновит. Если я сделаю это изменение, даже с помощью одного виджета, ничего не получится. Это моя конечная цель, но создание нескольких виджетов - это, наверное, первый шаг.