Не удалось получить доступ к широте и долготе с помощью address.getLatitude() во втором коде setOnClickListener

# #java #android #firebase #google-maps #google-cloud-firestore

Вопрос:

Могу я спросить, как я могу получить широту и долготу от первого setOnClickListener ниже и передать их второму setOnClickListener ? Я хочу сохранить широту и долготу в Firestore, используя код во втором setOnClickListener . Моя идея заключается в том, что когда я нажимаю на значок поиска, приложение получит широту и долготу местоположения.Поиск местоположения

Первый setOnClickListener код

 searchLoc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Geocoder geoceoder = new Geocoder(getApplicationContext(), Locale.getDefault());
                try{
                    List<Address> addressList = geoceoder.getFromLocationName(locationName, 3);

                    if(addressList.size() > 0){
                        //The address variable is declared in the first setOnClickListener.
                        Address address = addressList.get(0);
                        goToLocation(address.getLatitude(), address.getLongitude());
.
.
.
                        
 

Второй setOnClickListener код

Мне не удалось получить доступ к широте и долготе с помощью address.getLatitude() setOnClickListener кода второго блока. Я получаю ошибку: Cannot resolve symbol 'address'

 create_eventBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Map<String,Object> event = new HashMap<>();
                //Couldn't access the "address" in first setOnClickListener using address.getLatitude
                event.put("eventLocationLat", address.getLatitude);
                event.put("eventLocationLong", address.getLongitude);
                fStore.collection("event").add(event)...;
});
 

Поэтому, когда пользователь нажмет кнопку «Создать событие» внизу, setOnClickListener будет выполнена вторая и сохранит широту и долготу внутри Firestore.

Добавить Событие
введите описание изображения здесь

Комментарии:

1. Что именно в этом коде работает не так, как вы ожидаете? Расскажите нам, что не так с общим кодом. Есть ли у вас какие-либо ошибки?

2. Я хочу получить широту и долготу определенного местоположения, сохранить их в double переменной, но я не смог найти способ сделать это…

3. event.put("eventLocationLat", address.getLatitude); event.put("eventLocationLong", address.getLongitude); Я пытаюсь получить доступ с помощью address.getLatitude , появляется ошибка: Cannot resolve symbol 'address'

4. Итак, я хочу знать, есть ли другой способ, позволяющий мне получить доступ к Lat и Long из второго setOnClickListener?

5. Я приношу извинения, если я не высказался четко по поводу проблемы.

Ответ №1:

Вы получаете следующую ошибку:

Не удается разрешить символ «адрес»

Потому что вы объявили address объект в области действия первого прослушивателя. Это означает, что объект не виден внутри второго прослушивателя, следовательно, произошла ошибка.

Чтобы решить эту проблему, объявите переменную членом класса:

 private Address address;
 

Инициализируйте его внутри первого слушателя:

  address = addressList.get(0);
 

А затем просто используйте его внутри вашего второго слушателя. Ошибка исчезнет.

Комментарии:

1. Это то, что мне нужно, большое тебе спасибо, Алекс.