"Ошибка загрузки виджета"
Описание проблемы: Не удается загрузить виджет в Android
При загрузке виджета, если он не может найти ресурс или что-то в этом роде, на экране появляется сообщение "Проблема с загрузкой виджета". И всё! Потрясающе! Это сообщение остается на главном экране и даже не указывает, какой именно виджет не удалось загрузить.
Я разобрался с этой проблемой методом проб и ошибок, но хотел бы узнать, есть ли какие-либо ресурсы, где можно найти сообщение об ошибке, когда это происходит. Где в Android можно узнать, какую именно проблему он имел при загрузке виджета или даже, какой виджет не удалось загрузить?
5 ответ(ов)
Еще одна возможная причина этого:
Я увидел в логах:
Не удалось разрешить атрибут
Проблема заключалась в том, что я пытался использовать цвет из текущей темы в качестве фона для одного из моих макетов.
Например:
android:background="?themeColor"
Изменение этого на конкретный цвет решило проблему.
android:background="@color/White"
Как указано в комментариях, проверьте logcat. Вы увидите исключение NullPointerException. У меня также была такая проблема раньше.
Существует, конечно, сценарий, при котором на главном экране загружен виджет, и пользователь затем удаляет приложение, содержащее этот виджет и конфигурационное приложение для виджетов.
Когда это происходит, на главном экране вы видите только сообщение "Ошибка загрузки виджета" в виде всплывающего окна. Насколько мне известно, виджет не получает никаких уведомлений о том, что пакет удаляется, и, наверное, после этого менеджер виджетов на главном экране просто выдает стандартное сообщение.
Такое поведение со стороны команды разработчиков ОС не очень продуманное. Я предлагаю, чтобы перед удалением пакета вызывались методы onDisabled()
и onDestroy()
виджета, чтобы они могли при необходимости выполнить очистку, и пользователю (обычному пользователю, не знакомому с техническими тонкостями) обеспечивался более аккуратный опыт.
У меня тоже была такая проблема, но только из-за тяжелого макета виджетов. Макет виджетов следует делать как можно легче. Теперь мой виджет работает отлично.
Объект RemoteViews (а следовательно, и виджет приложения) может поддерживать следующие классы макетов:
FrameLayout
LinearLayout
RelativeLayout
GridLayout
А также следующие классы виджетов:
AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
ViewFlipper
ListView
GridView
StackView
AdapterViewFlipper
Использование других классов приведет к проблеме, известной как "Проблема с загрузкой виджета".
Кроме того, проверьте логи (без каких-либо фильтров), чтобы увидеть точную строку, где возникла эта проблема.
Методы getWidth() и getHeight() у View возвращают 0
Ошибка «Необходимо переопределить метод суперкласса» после импорта проекта в Eclipse
Как заставить Android-устройство вибрировать с разной частотой?
Room - Директория экспорта схемы не указана аннотационному процессору, не удается экспортировать схему
Как сгенерировать уникальный хеш-код для строкового ввода в Android?