部署时使用Google Maps的BadParcelableException

时间:2013-04-16 18:45:53

标签: android google-play-services google-maps-android-api-2

我有一个Activity,允许用户选择地理边界,并通过setResult函数返回它们:

public class MyActivity extends Activity
.
.

  buttonOk.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            LatLngBounds bounds = map.getProjection().getVisibleRegion().latLngBounds;
            Intent result = new Intent();
            result.putExtra(RESULT_KEY_MAP_BOUNDS, bounds);
            setResult(RESULT_OK, result);
            finish();
        }
    });

,调用代码是: 。 。

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case ACTIVITY_SELECT_GAME_BOUNDS:
            if (resultCode == RESULT_OK) {
                mapFragment.getView().setVisibility(View.VISIBLE);
                LatLngBounds bounds = 
                        data.getExtras().getParcelable(SelectGameBoundsActivity.RESULT_KEY_MAP_BOUNDS);

当我运行eclipse时,这很好用,但在尝试创建APK(已签名或未签名)并在同一设备上运行时,我收到以下错误:

  

引起:android.os.BadParcelableException:Parcelable协议在com.google.android.gms.maps.model.LatLngBounds类上需要一个名为CREATOR的Parcelable.Creator对象

这发生在这一行:

LatLngBounds bounds = 
                       data.getExtras().getParcelable(SelectGameBoundsActivity.RESULT_KEY_MAP_BOUNDS);

该设备正在运行最新的Google Play服务。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可能必须阻止ProGuard剥离所需的类。

-keep public class com.google.android.gms.maps.** { public *; }

将其添加到您的proguard-project.txt文件中。