updateWidget(context, AppWidgetManager.getInstance(context),
Id);
Id берётся из интента. Кстате который Вы забыли в своём новом методе. Так вот Id вы прикрепляете к active.putExtra("ID",appWidgetIds[0]). Вот такая карусель...
Проблема в том ,что onUpdate срабатывает раз, при установке виджета, а затем через фиксированный интервал, примерно минимум раз в 30мин. Поэтому тут нужно подругому:
1. Выделить в отдельный метод изменения виджета. И вызывать этот метод в onUpdate.
2. Вызывать этот метод в onReceive(), после изменения le_set_on
Рекламы нет. Про ошибки не знаю, всё возможно, но курсы для начинающих прочитать можно. Сам ещё в далёком 2009 смотрел видео по c#. Моё дело предложить...
Дело в безымянном классе, реализующем метод OnClick() интерфейса OnClickListener. Ссылка this была именно на него, а не на объект MainActivity. Я конечно тоже затупил.
id самого массива постоянный. Индексы в массиве то же,т.к. массив уже задан в ресурсе. С массивом работать лучше, чем постоянно систему заставлять искать строковый ресурс.