it-swarm.com.ru

Сообщение "Ошибка загрузки виджета"

При загрузке виджета, если он не может найти ресурс или что-то еще, он говорит о проблеме загрузки виджета. Это все! Удивительно! Это сообщение остается на главном экране и даже не говорит, какой виджет у него возникли проблемы при загрузке. 

Я понял это методом проб и ошибок, но я хотел бы знать, есть ли места, где можно найти сообщение об ошибке, когда это происходит. Где Android скажет, с какой проблемой он столкнулся при загрузке виджета или даже какой виджет не удалось загрузить?

39
Androider

Как сказано в комментариях, проверьте logcat. То, что вы увидите, это исключение NullPointerException. У меня было это раньше тоже.

25
Unconn

Проверьте элементы, которые вы использовали в представлении в виджете.

Ссылка на документацию

Объект RemoteViews (и, следовательно, виджет приложения) может поддерживать следующие классы макета:

  • FrameLayout
  • LinearLayout
  • RelativeLayout
  • Макет сетки

И следующие классы виджетов:

  • AnalogClock
  • Кнопка
  • Хронометр
  • ImageButton
  • ImageView
  • Индикатор
  • TextView
  • ViewFlipper
  • Посмотреть список
  • Вид сетки
  • StackView
  • AdapterViewFlipper

Использование запрещенных элементов вызывает это очень 

Проблема загрузки виджета

сообщение, не говоря, где это произошло.

105
Gangnus

Еще одна возможная причина этого:

Я видел это в журнале:

Не удалось разрешить атрибут

Проблема заключалась в том, что я пытался использовать цвет текущей темы в качестве фона для одного из моих макетов.

например 

Android:background="?themeColor"

Изменение этого к определенному цвету решило проблему.

Android:background="@color/White"
8
Kuffs

Конечно, есть сценарий использования, когда на домашней странице загружался виджет, а затем пользователь удаляет приложение, содержащее приложение настройки виджета и виджета.

Когда это происходит, все, что вы видите, это «Виджет загрузки проблем» в виде тостов на главном экране. Насколько я могу судить, виджет не получает указаний на то, что пакет удаляется, и я предполагаю, что на главном экране AppWidgetManager выдает сообщение по умолчанию.

Не очень продуманное поведение со стороны команды ОС. Я полагаю, что было бы лучше вызвать методы виджета onDisbled () и onDestroy (), прежде чем пакет будет удален, чтобы они могли привести в порядок, если это будет необходимо, и пользователь (не пользователь телефона) получает чистый опыт.

3
Grandpop

Я тоже сталкиваюсь с этой проблемой, но только из-за тяжелой компоновки виджетов. Макет виджета должен быть настолько легким, насколько вы можете создать. Теперь мой виджет работает отлично.

3
ParikshitSinghTomar

Объект RemoteViews (и, следовательно, виджет приложения) может поддерживать следующие классы макета:

FrameLayout
LinearLayout
RelativeLayout
GridLayout

И следующие классы виджетов:

AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
ViewFlipper
ListView
GridView
StackView
AdapterViewFlipper

Любое использование, отличное от указанного выше, вызывает этот так называемый «виджет загрузки проблем».

Кроме того, проверьте журналы (без какого-либо фильтра), чтобы увидеть точную линию этой проблемы.

3
Sachin Sharma

Проблема Загрузка виджета в результате проблемы/с в вашем макете виджета!

Существует только ограниченное количество ресурсов, которые вы можете использовать в виджете. Убедитесь, что вы используете правильные элементы и их поля.

Объект RemoteViews (и, следовательно, виджет приложения) может поддерживать следующие ... классы виджетов:

AnalogClock
Button
...

Документы для разработчиков

Моя проблема была: у меня было поле этой кнопки, которое не поддерживалось

Android:onClick="onClick" 

Удаление этого параметра позволило виджету появиться там, где он был помещен (если он был помещен ранее), и в меню доступных виджетов.

Фактически установка Android:onClick= для любого View приводит к этой ошибке.

3
coolcool1994

Это может быть вызвано Moving of the specific (Widget) Application from Internal Memory to SD card. ( Android - Исправление ошибки «Виджет загрузки проблем» )

2
hasanghaforian

В основном виджеты проглатывают исключения. Просто установите соответствующий фильтр в вашем logcat, и вы сможете увидеть, в чем проблема ...

 enter image description here

Выше я просто ищу слово "Widget" и не устанавливаю фильтр для какого-либо конкретного приложения. По сути это дает мне Throwable.getMessage() без полной трассировки стека.

2
Eurig Jones

Я столкнулся с этой проблемой, потому что я пытался использовать флажок! 

Итак, просто remove checkbox.

это будет работать нормально.

1
Armsuntech

Просто исправлен еще один вариант этой ошибки, не упомянутый в других ответах.

Симптомами были: 1) Ошибка «Загрузка виджета» на Gingerbread и ниже 2) Точно такая же сборка работала нормально на ICS и Jellybean 3) Нет ошибок в logcat

Проблема была вызвана манипулированием видом, который никогда не был раздут в удаленных представлениях. В частности:

remoteviews.setViewVisibility(viewId, View.GONE);

Где viewId был допустимым ресурсом, но он был в макете, который никогда не был добавлен к удаленным представлениям. Не было выдано никаких ошибок, и виджет отображал «Проблема загрузки виджета» после вызова .updateAppWidget ()

1
Jim Vitek

У меня та же проблема, когда я удаляю приложение для заметок, я пытаюсь коснуться и удержать сообщение, и оно показывает меню удаления, я выбираю удалить, чем оно исчезает.

0
Yusufmm

В моем случае ошибка была вызвана измененным именем класса провайдера. Поэтому, если вы изменили имя класса провайдера виджетов, попробуйте изменить его обратно. Кроме того, если вы изменили имена XML-файлов (например, widget_info.xml, widget_layout.xml), вы также можете изменить их обратно.

Это произошло только тогда, когда пользователь обновил приложение и «старый» виджет был виден в данный момент.

0
crpse

У меня тоже была такая же проблема - 

Я использовал Android.support.constraint.ConstraintLayout, поэтому он говорил "Проблема с загрузкой виджета" после удаления этого и изменения на LinearLayout проблема решена как @Gangnus говоря , это будет работать только для определенных видов. 

0
Bajrang Hudda

В моем случае у меня был плавающий textView поверх других представлений. Устранить его и подумать о другом способе отображения моей информации пользователю с существующими представлениями, которые не перекрываются, было решением. 

Так что не перекрывайте представления с RelativeLayout, я все еще использую его, и он работает, но представления не перекрываются настолько, насколько это возможно.

0
Vlad M.

Я была такая же проблема. Проблема решена: я использовал пользовательский вид в виджете. В моей ситуации это был TextView с пользовательской гарнитурой.

0
ikosdroid

Только для записи. У меня есть FrameLayout с TextView внутри, все содержимое в LinerLayout, которое будет заголовком моего виджета. Первоначально у меня было это

<LinearLayout
[...] 

<FrameLayout
    Android:id="@+id/widget"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:background="@color/colorPrimary">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:text="@string/app_name"
        Android:layout_margin="@dimen/activity_horizontal_margin"
        Android:textColor="@Android:color/white"/>
</FrameLayout>

[...] 
</LinearLayout>

Как и все здесь, у меня было сообщение «Проблема загрузки виджета». Решение было изменить это

    Android:layout_height="?attr/actionBarSize"

за это:

    Android:layout_height="64dp"
0
jorgeavilae

У меня была такая же проблема, но logcat не показывал ничего подозрительного, ни ошибки, ни предупреждения. По сути, я вызывал неправильный метод, чтобы изменить цвет текстового представления text .

0
AntonSack