Метод обратного вызова onError никогда не вызывается?

В моем приложении я использую фрагмент автозаполнения Google для преобразования местоположения из политического имени в координаты лан-лона.

Однако, если у меня нет интернет-адреса, откуда Фрагмент может получить свои предложения, Фрагмент показывает сообщение об ошибке пользователю. НЕ вызывает onError функция обратного вызова, определенная в его PlaceSelectionListener как и было заявлено в API Google Адресов.

Это проблема. У меня есть локальная база данных, в которой я храню предыдущие данные, которые я хотел бы использовать в качестве резервной копии на случай, если у меня нет Интернета, но это, по сути, оставляет мне UX-дружественный способ показать это. Пользователь должен либо помять TRY AGAIN кнопку или щелчок, и даже когда он это делает, фрагмент автозаполнения размещения не дает мне информацию в его TextView.

Мой вопрос: как я могу сделать onError запустите или, альтернативно, как получить информацию из текстового представления фрагмента.

Пример кода:

private void setupGooglePlaceSearchBar(){
        autocompleteFragment = (PlaceAutocompleteFragment)
                getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);

        autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
            @Override
            public void onPlaceSelected(Place place) {
                currentCity = place.getName().toString();
                currentLatLong = new double[]
                        {place.getLatLng().latitude, place.getLatLng().longitude};
            }

            @Override
            public void onError(Status status) {
                // TODO: Handle the error.
                currentCity = "wrong";
                alert("Can't process this location. Please ensure you're connected to the internet.");
                //findViewById(R.id.root).requestFocus();
                System.out.println(status.getStatusMessage());
            }
        });
    }

Если у меня есть интернет, onPlaceSelected работает нормально. Если у меня нет интернета, onError не запускается.

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

0 ответов