Android:发回一个片段丢失数据的意图

时间:2012-12-17 12:56:26

标签: android fragment

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

Fragment的代码如下:

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的信息。

这里有什么问题?

1 个答案:

答案 0 :(得分:0)

替换:

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

通过

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

此致