将经度和纬度与意图传递给另一个类

时间:2015-05-07 16:14:22

标签: android

我正在尝试将纬度和经度从MainActivity中的onLocationChanged传递到另一个包com.route.providerDataPrivider,但我收到此错误,我该怎么办呢?以及如何在DataProvider中接收它们?

        double pLong = location.getLongitude();
        double pLat = location.getLatitude();

        LatLng fromPostion = new LatLng(pLat,pLong );

        Bundle args = new Bundle();
        args.putParcelable("longLat_dataPrivider", fromPostion);
  

Bundle类型中的putParcelable(String,Parcelable)方法不适用于参数(String,LatLng)

3 个答案:

答案 0 :(得分:3)

看起来问题不在于您的代码,而在于导入或项目设置。

我在Android Studio中通过在LatLng之间将Intent对象作为Parcelable传递给两个活动来实现这一点。

在我的build.gradle中:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:26.0.1'
    compile 'com.google.android.gms:play-services-maps:12.0.0'
    compile 'com.google.android.gms:play-services-location:12.0.0'
}

在两个活动中,使用以下导入:

import com.google.android.gms.maps.model.LatLng;

以下是适用于我的测试代码:

MainActivity.java:

double pLong = -121.345678;
double pLat = 37.123456;

LatLng fromPostion = new LatLng(pLat, pLong);

Bundle args = new Bundle();
args.putParcelable("longLat_dataPrivider", fromPostion);

Intent i = new Intent(this, MapActivity.class);
i.putExtras(args);
startActivity(i);

MapActivity.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity2);

    Intent i = getIntent();

    LatLng ll = i.getParcelableExtra("longLat_dataPrivider");

    Log.d("Location", "location: " + ll.latitude + " " + ll.longitude);

}

答案 1 :(得分:2)

LatLng不能那样传递(遗憾地)。

编辑:Daniel Nugent曝光并证明确实LatLng是可以分辨的。因此,它的解决方案比我的好,我必须承认而且我也学到了一些东西。

我建议分别保存lat / lng值:

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

然后像这样检索它们:

final double latitude = getIntent().getDoubleExtra("latitude");
final double longitude = getIntent().getDoubleExtra("longitude");
final LatLng = new LatLng(latitude, longitude);

答案 2 :(得分:0)

您可以将值直接添加到intent中。

intent.putExtra(KEY, VALUE)

否则尝试使用

args.putDouble(LON_KEY, pLong)
args.putDouble(LAT_KEY, pLat)