Ответ 1
Как сказано в комментариях, проверьте logcat. Что вы увидите, это исключение NullPointerException. У меня тоже было это.
При загрузке виджета, если он не может найти ресурс или что-то, что он говорит, проблема загрузки виджета. Все это! Удивительно! Это сообщение остается на главном экране и даже не говорит, какой виджет у него возникли проблемы с загрузкой.
Я понял это методом проб и ошибок, но я хотел бы знать, есть ли места, где можно найти сообщение об ошибке, когда это произойдет. Где Android скажет, какую проблему он загрузил виджет или даже тот виджет, который он не смог загрузить?
Как сказано в комментариях, проверьте logcat. Что вы увидите, это исключение NullPointerException. У меня тоже было это.
Проверьте элементы, которые вы использовали в представлении в виджете.
Объект RemoteViews (и, следовательно, виджет App) может поддерживать следующие классы макета:
И следующие классы виджетов:
Использование запрещенных элементов вызывает это сообщение "Проблема загрузки виджета", не сказав, где это произошло.
Еще одна возможная причина этого:
Я видел это в журнале:
Не удалось разрешить атрибут
Проблема заключалась в том, что я пытался использовать цвет из текущей темы в качестве фона для одного из моих макетов.
e.g
android:background="?themeColor"
Изменение этого параметра на определенный цвет устраняет проблему.
android:background="@color/White"
Существует, конечно, прецедент, где на домашней странице загружен виджет, а затем пользователь удаляет приложение, содержащее виджет и приложение для настройки виджета.
Когда это произойдет, все, что вы видите, это "Проблема с загрузкой виджета" в тост-подобном поле на главном экране. Насколько я могу судить, виджет не получает никаких указаний на то, что пакет удаляется, и я предполагаю, что домашний экран AppWidgetManager отправляет сообщение по умолчанию.
Непродуманное поведение со стороны команды OS. Я предлагаю, чтобы было лучше вызвать методы widget onDisbled() и onDestroy() до того, как пакет будет удален, чтобы они могли при необходимости убирать, и пользователь (пользователь без имени пользователя) получает чистый опыт.
Я также сталкиваюсь с этой проблемой, но только из-за тяжелой компоновки виджетов. Макет виджетов должен быть таким же легким, как вы можете создать. Теперь мой виджет работает отлично.
Объект RemoteViews (и, следовательно, виджет App) может поддерживать следующие классы макета:
FrameLayout
LinearLayout
RelativeLayout
GridLayout
И следующие классы виджетов:
AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
ViewFlipper
ListView
GridView
StackView
AdapterViewFlipper
Все, что используется, кроме выше, вызывает так называемый "виджет загрузки задачи".
Кроме того, проверьте журналы (без фильтра), чтобы увидеть точную строку этой проблемы.
Это может быть вызвано Moving of the specific (Widget) Application from Internal Memory to SD card
. (Android - исправление ошибки "Загрузка загружаемого виджета" )
Проблема Загрузка результатов виджета из задачи /s в макет виджетов!
Существует ограниченный объем ресурсов, которые вы можете использовать в виджетах. Убедитесь, что вы используете правильные элементы и их поля.
Объект RemoteViews (и, следовательно, виджет приложения) может поддерживать следующие классы виджета:
AnalogClock Button ...
Моя проблема: у меня было это поле Button, которое не поддерживалось
android:onClick="onClick"
Удаление этого параметра позволило отображать виджетов, где они были размещены (если они были размещены ранее) и в меню доступных виджетов.
Фактически установка android:onClick=
для любого View
приводит к этой ошибке.
Я столкнулся с этой проблемой, потому что пытался использовать флажок!
Итак, просто remove checkbox
.
он будет работать нормально.
Просто исправлен другой вариант этой ошибки, не упомянутый в других ответах.
Симптомы: 1) Ошибка "Ошибка загрузки виджета" на Gingerbread и ниже 2) Точно такая же конструкция отлично справилась с ICS и Jellybean 3) Нет ошибок в logcat
Проблема была вызвана манипулированием представлением, которое никогда не накачивалось в remoteviews. В частности:
remoteviews.setViewVisibility(viewId, View.GONE);
Если viewId был действительным ресурсом, но он был в макете, который никогда не добавлялся к удаленным представлениям. Никаких ошибок не было, и виджет отобразил "Проблема с загрузкой виджета" после вызова .updateAppWidget()
У меня была такая же проблема, но logcat не обнаружил ничего подозрительного, ни ошибки, ни предупреждения. В основном, я вызывал неправильный метод для изменения цвета текста .
У меня такая же проблема, когда я удаляю приложение для заметок, я пытаюсь прикоснуться и удерживать сообщение, и он показывает меню удаления, я выбираю удалить, чем он исчезает.
У меня была такая же проблема. Устранена проблема: я использовал пользовательский вид в виджетах. В моей ситуации это был TextView с пользовательским шрифтом.
В моем случае у меня был плавающий textView
над другими видами. Решение проблемы с удалением его и мышлением о другом способе отображения моей информации пользователю с существующими представлениями, которые не перекрываются, было решением.
Поэтому не перекрывайте представления с помощью RelativeLayout
, я все еще использую его, и он работает, но представления не перекрываются как можно больше.
В основном виджеты заимствуют исключения. Просто установите соответствующий фильтр в вашем логарифме, и вы сможете узнать, в чем проблема...
Выше, я просто ищу слова " Виджет" и не устанавливаю фильтр для какого-либо конкретного приложения. Это по существу дает мне Throwable.getMessage()
без полной трассировки стека.
Только для записи. У меня есть 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"