首页 > 解决方案 > 无法通过 Intent 从子活动(谷歌地图)传递价值到父活动

问题描述

我只是想使用 onActivityResult 从谷歌地图(儿童活动)中检索纬度和经度值,以将其传递回父活动。但是,检索到的值似乎总是返回 0。对此的任何帮助将不胜感激!

家长活动:

 Intent intent;
 intent = new Intent(TheInput.this, GoogleMap.class);
 startActivityForResult(intent, 5);
 break;
 ...
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == 5){
            if(resultCode == RESULT_OK) {
                latitude = getIntent().getDoubleExtra("LATITUDE",0);
                longitude = getIntent().getDoubleExtra("LONGITUDE",0);
                Toast.makeText(getApplicationContext(), "From the received data, \nLat is " + latitude + ", Lon is " + longitude, Toast.LENGTH_SHORT).show(); 
                 //The toast value shows 0
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

儿童活动(谷歌地图):

List<Address> locationList = null;
Address address = locationList.get(0);
LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());
lat = address.getLatitude();
lon = address.getLongitude();

Intent intent = new Intent();
intent.putExtra("LATITUDE",lat);
intent.putExtra("LONGITUDE",lon);
setResult(RESULT_OK, intent);

Toast.makeText(getApplicationContext(), "Lat is " + lat + ", Lon is " + lon, Toast.LENGTH_SHORT).show();
//The toast shows that they are values here

标签: androidandroid-intent

解决方案


找出我的错误,父活动中的这部分代码

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == 5){
            if(resultCode == RESULT_OK) {
                latitude = getIntent().getDoubleExtra("LATITUDE",0);
                longitude = getIntent().getDoubleExtra("LONGITUDE",0);
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

应该改为这样写。

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == 5){
            if(resultCode == RESULT_OK) {
                latitude = data.getDoubleExtra("LATITUDE",0);
                longitude = data.getDoubleExtra("LONGITUDE",0);
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

推荐阅读