我想在新活动中在新地图上标记位置。这是我的代码。
我已通过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
答案 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);
}