将地图坐标传递到android studio中的另一个活动

时间:2018-07-30 07:11:23

标签: android maps

我想在新活动中在新地图上标记位置。这是我的代码。

我已通过putExtra发送了坐标

Package pkg;
Microsoft.SqlServer.Dts.Runtime.Application app;
app = new Microsoft.SqlServer.Dts.Runtime.Application();
pkg = app.LoadPackage(pkgLocation, null);
pkg.ProtectionLevel = DTSProtectionLevel.DontSaveSensitive;
app.SaveToXml("myXMLPackage.dtsx", pkg, null);

我这样收到了他们

Intent intent = new Intent(this, RealMap.class);

Bundle args = new Bundle();
args.putDouble("latitude",honey.latitude);
args.putDouble("longitude",honey.longitude);

intent.putExtra("bundle",args);
startActivity(intent);

Intent i = new Intent(getApplicationContext(),ShowHoney.class);
startActivity(i);

这不是完整的代码,我认为其他地方都没有问题。我的代码编译没有问题,但是当我在手机上尝试时,它会关闭。它说捆绑是一个空指针。我不知道为什么它不起作用。

double lat = 0;
double lon = 0;

Bundle bundle = getIntent().getParcelableExtra("bundle");

if (bundle != null) {
    lat = bundle.getParcelable("latitude");
    lon = bundle.getParcelable("longitude");


    LatLng honey = new LatLng(lat, lon);
    BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.mipmap.mylocation);
}

所以我尝试放入if(bundle!= null) 该应用程序可以运行,但是并没有实现我真正想要的功能,因为捆绑包始终为null

4 个答案:

答案 0 :(得分:0)

您正在传递Double值,并在接收者活动时使用getParcelable()。那是错的。您应该使用 Double 获得getDoubleExtra()的价值。

    double lat = 0;
    double lon = 0;
    lat = getIntent().getDoubleExtra("latitude",0); // default value 0, if 'latitude' is not passed.
    lon = getIntent().getDoubleExtra("longitude",0);
    LatLng honey = new LatLng(lat, lon);

或使用Bundle

double lat=0;
double lon=0;

Bundle bundle = getIntent().getBundleExtra("bundle");

if (bundle != null) {
    lat = bundle.getDouble("latitude",0);
    lon = bundle.getDouble("longitude",0);
}

这将解决您的问题。

建议:

(1)另外,Activity具有默认的putExtra()方法,因此您无需使用Bundle对象。只需使用下面的代码即可。

    Intent intent = new Intent(this, RealMap.class);
    intent.putExtra("latitude", honey.latitude);
    intent.putExtra("longitude", honey.longitude);
    startActivity(intent);

(2)为putExtra()getExtra()创建常量字符串键。

答案 1 :(得分:0)

这样做:

您的PutExtra

Intent intent = new Intent(this, RealMap.class);

intent.putExtra("latitude",honey.latitude);
intent.putExtra("longitude",honey.longitude);

startActivity(intent);

像这样接收他们

double lat=0;
double lon=0;

Bundle bundle = getIntent().getExtras();

if (bundle != null) {
    lat = bundle.getDouble("latitude");
    lon = bundle.getDouble("longitude");
}

答案 2 :(得分:0)

bundle b = getIntent()。getExtras();

使用此代码获取捆绑包,并检查其是否为空。

答案 3 :(得分:0)

尝试一下

if(getIntent().hasExtra("bundle")){

Bundle bundle = getIntent().getBundleExtra("bundle");
       if(bundle!=null){
         lat = bundle.getDouble("latitude");
         lon = bundle.getDouble("longitude");
    }
}

OR

像这样发送它

Intent intent = new Intent(this,ShowHoney.class);
        intent.putExtra("latitude", honey.latitude);
        intent.putExtra("longitude", honey.longitude);
        startActivity(intent);

并这样接收

if (getIntent().getExtras() != null) {
            Double lat = getIntent().getDoubleExtra("latitude", 0.0);
            Double lon = getIntent().getDoubleExtra("longitude", 0.0);
        }