# #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. Это то, что мне нужно, большое тебе спасибо, Алекс.