Android 安卓:发回一个意图分割丢失的数据
我不知道我做错了什么。 我想把用户发送到谷歌地图,然后从片段中选择一个位置。但在保存位置后,用户返回片段,但保存的数据丢失 该片段的代码如下所示:Android 安卓:发回一个意图分割丢失的数据,android,fragment,Android,Fragment,我不知道我做错了什么。 我想把用户发送到谷歌地图,然后从片段中选择一个位置。但在保存位置后,用户返回片段,但保存的数据丢失 该片段的代码如下所示: mapButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), SlamMap.clas
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 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);
}
}
片段接收到这样的结果意图
@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中的代码处理数据如下:
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 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调用,但是意图没有关于我的两个字符串LON和LAT的信息
这里出了什么问题?更换:
String lon = data.getStringExtra("LON");
String lat = data.getStringExtra("LAT");
借
关于不,不是这样。我已经调试了意图,里面没有多余的东西。因此,在某种程度上,intent在将信息发送回片段的过程中丢失了信息。您是否检查了onMenuItemSelected方法上是否设置了LAT和LON?是的,它们是
Log.i(“RUN”,“long”)(itemizedOverlay.getLon())代码>告诉我一个数字