0

我不知道我做错了什么。好吧,我想将用户发送到谷歌地图并从片段中选择一个位置。但是在保存位置后,用户返回到片段,但保存的数据丢失了。

片段有这样的代码:

mapButton.setOnClickListener(new View.OnClickListener() {
    @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), SlamMap.class);
            startActivityForResult(intent, 9998);
            getActivity().overridePendingTransition(R.anim.slide_in_left,
                    R.anim.slide_out_left);
        }
    });

并且片段像这样接收结果意图

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case (9998): {
        if (resultCode == Activity.RESULT_OK) {
            Log.i("RUN", data.toString());
            String lon = data.getStringExtra("LON");
            String lat = data.getStringExtra("LAT");
            setLocation(lon, lat);
        }
        break;
    }
    }
}

好吧,MapActivity 中的代码处理数据如下:

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch (item.getItemId()) {
    case R.id.addLoc:
        Intent resultIntent = new Intent();
        if (itemizedOverlay.getLat() != 0 && itemizedOverlay.getLon() != 0) {
            Log.i("RUN", "" + (long) (itemizedOverlay.getLon()));
            resultIntent.putExtra("LON",
                    String.valueOf((long) itemizedOverlay.getLon()));
            resultIntent.putExtra("LAT",
                    String.valueOf((long) itemizedOverlay.getLat()));
            setResult(Activity.RESULT_OK, resultIntent);
            finish();
            overridePendingTransition(R.anim.slide_out_right,
                    R.anim.slide_in_right);
        }
        return true;
    default:
        return super.onMenuItemSelected(featureId, item);
    }
}

但正如我所说,onActivityResult 由 setResult 调用,但 Intent 没有关于我的两个字符串 LON 和 LAT 的信息。

这里有什么问题?

4

1 回答 1

0

代替:

String lon = data.getStringExtra("LON");
String lat = data.getStringExtra("LAT");

经过

String lon = data.getExtras().getString("LON");
String lat = data.getExtras().getString("LAT");

问候

于 2012-12-17T14:05:04.580 回答