Intereting Posts
Как установить Android SDK Build Tools в командной строке? Почему OnClickListener в ViewHolder не работает? Instabug для предупреждения о сбое Android Запуск события карты (например, щелчка маркера) в картах Google Android V2 Показывать только одного ребенка расширяемого списка за раз Анимация Fab на клик (увеличение / уменьшение) Андроид mutable bitmap Google Analytics V3 для Android: услуга недоступна (код = 1), используя локальный магазин Как читать / писать строки из файла на Android ImageButton с различными размерами изображений состояний Приложение my cordova для веб-браузера действительно медленнее, чем в браузере Android на том же телефоне Galaxy S5 Lollipop – не все точки останова прекращают выполнение под отладчиком Android Studio Добавление расстояния до координаты GPS Использование HTML в Android Alert Dialog Ошибка установки пакета Android-SDK, хотя Eclipse & SDK-менеджер запускается в качестве администратора на Vista

После того, как кнопки изменения ориентации на виджете не отвечают

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

Я столкнулся с проблемой с appwidget, у которого есть один ImageView внутри макета xml, для которого я регистрирую ожидающий запрос, который обрабатывается в методе OnReceive. Все работает нормально, пока я не изменю ориентацию телефона. На данный момент виджет больше не работает, я нажимаю на изображение, но ничего не происходит. Эта проблема в точности такая же: здесь, когда кнопки изменения ориентации на виджете не отвечают

В чем проблема и как ее можно решить? Благодарю.

Solutions Collecting From Web of "После того, как кнопки изменения ориентации на виджете не отвечают"

В конечном итоге мне удалось воссоздать бесплатное решение OP. Вот секрет записи: каждый раз, когда вы обновляете удаленные представления, вы должны обновлять все, что вы когда-либо обновляете. Мое приложение обновляло некоторые визуальные элементы, но не снова настраивало обработчик кнопки. Это заставило обработчика перестать работать – не сразу – только после изменения поворота, отсюда и путаница.

Если это сделано правильно, вам не нужно перехватывать трансляции смены конфигурации, последние удаленные просмотры, которые вы установили, будут использоваться снова после поворота. Для вашего AppWidgetProvider вызова не требуется.

У меня была аналогичная проблема, но мое приложение теперь работает хорошо с решением, предложенным Алексом

«… решается без помощи службы, просто снова устанавливая setOnClickPendingIntent в методе OnReceive»

Я отслеживал метод onReceive, и он называется каждый раз, когда я меняю ориентацию своего устройства, поэтому я снова вызвал конфигурацию моего виджета в методе onReceive.

В любом случае я не уверен, что это лучшее решение для решения этой проблемы, если кто-то знает лучшее решение, пожалуйста, поделитесь.

Благодарю.

Всякий раз, когда вы обновляете внешний вид своего виджета (используя либо Activity, либо ваш широковещательный приемник [поставщик виджета приложений]), вы также должны переназначить все PendingIntents для обработчиков кликов, а затем вызвать updateAppWidget() как обычно.

Пример с setTextViewText() :

 // This will update the Widget, but cause it to // stop working after an orientation change. updateWidget() { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); remoteViews.setTextViewText(R.id.widget_text_view, "Updated widget"); appWidgetManager.updateAppWidget(appWidgetId, remoteViews); } // This is the correct way to update the Widget, // so that it works after orientation change. updateWidget() { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); remoteViews.setTextViewText(R.id.widget_text_view, "Updated widget"); Intent intent = new Intent(context, MyWidgetActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, ...); remoteViews.setOnClickPendingIntent(R.id.widget_click_button, pendingIntent); appWidgetManager.updateAppWidget(appWidgetId, remoteViews); } 

См. Здесь возможное объяснение или дальнейшие действия:

http://permalink.gmane.org/gmane.comp.handhelds.android.devel/98008

или

http://groups.google.com/group/android-developers/browse_thread/thread/578a4429c369c27c/273a53a96ddd10c5?lnk=gst&q=Widget+does+not+respond+when+phone+orientation+changes#273a53a96ddd10c5

Но пока не ясно, что такое истинное решение.