我不知道我做错了什么。 好吧,我希望将用户发送到谷歌地图并从片段中选择一个位置。但是在保存位置后,用户返回到片段,但保存的数据丢失了。
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的信息。
这里有什么问题?
答案 0 :(得分:0)
替换:
String lon = data.getStringExtra("LON");
String lat = data.getStringExtra("LAT");
通过
String lon = data.getExtras().getString("LON");
String lat = data.getExtras().getString("LAT");
此致