WebView бросает Получатель не зарегистрирован: android.widget.ZoomButtonsController

Я вижу, что это исключение спорадически поднимается в моем приложении (в дикой природе). WebView используется для отображения jpg (используя возможности масштабирования/прокрутки версии Android/устройство, а не изобретать колесо и делать все вещи отражения).

Я понятия не имею, почему это исключение в конце концов могло возникнуть. В основном я могу думать только об ошибке Android.

Что я делаю (все в графическом потоке):

  • покажет миниатюру в виде предварительного просмотра
  • установить getSettings(). setBuiltInZoomControls (false)
  • когда загружается обычное изображение, вместо этого отобразите
  • set getSettings(). setBuiltInZoomControls (true)

Почему установка/включение ZoomControls: большой палец нельзя масштабировать, так как WebView сбрасывает это значение на loadData, как только будет доступно и отображено обычное изображение. Было бы плохой пользовательский опыт.

Пример устройства: HTC Desire @htc_wwe/htc_bravo/bravo/bravo: 2.2/FRF91/226611: ключи пользователя/релиза

У меня есть точно такое же устройство/программное обеспечение, и это никогда не случалось со мной...

Любые идеи?

С уважением, Оливер

Ответ 1

Я не люблю отвечать самому себе, но littleFluffyKitty не сделал (только в комментариях).

Решение находится в Как безопасно включать и отключать масштабирование WebView по мере необходимости

a) создайте свой собственный класс WebView

public class MyWebView extends WebView {

b) добавьте в него метод onDestroy():

getSettings().setBuiltInZoomControls(true);

Что это. Благодаря этому больше не появляется никаких исключений.