java - 在第二个 setOnClickListener 代码中使用 address.getLatitude() 访问纬度和经度失败
问题描述
请问,如何从下面的第一个获取纬度和经度setOnClickListener
并将其传递给第二个setOnClickListener
?我想通过使用第二个中的代码将纬度和经度存储在 Firestore 中setOnClickListener
。我的想法是当我点击Search Icon时,该应用程序将获取该位置的纬度和经度。
第一个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中。
解决方案
您收到以下错误:
无法解析符号“地址”
因为您已经address
在第一个侦听器的范围内声明了该对象。这意味着该对象在第二个侦听器中不可见,因此出现错误。
为了解决这个问题,将变量声明为类的成员:
private Address address;
在第一个监听器中初始化它:
address = addressList.get(0);
然后简单地在你的第二个监听器中使用它。错误将消失。
推荐阅读
- mpi - 在多个计算节点上运行 MPI 时出现 ORTE 问题
- javascript - var dump 正在 php 中打印整个脚本标记
- django - 将查询传递给 Django 测试
- elasticsearch - Elasticsearch:浏览排序的术语
- c# - 每次运行控制台应用程序时构建类库
- javascript - 无法在数组中显示多个事物
- java - 将自定义对象列表添加到 Redis
- api - MediaWiki API 正在返回来自 Wikipedia 的空摘录
- python - Win 10,python 3.8 selenium 3.141 WebDriver 错误:消息:chrome 无法访问
- html - 如何在 index.html.erb 中定义图像标签?