0
我不知道我在做什麼錯。 嗯,我想發送用戶谷歌地圖,並從片段中選擇一個位置。但保存位置後,用戶回到片段,但保存的數據丟失。Android:發回意圖丟失數據片段
所述片段具有這樣的代碼:
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調用,但我內容沒有關於我的兩個字符串LON和LAT的信息。
這裏有什麼問題?
都能跟得上,這不是它。我調試了Intent,並且沒有額外的內容。因此,無論如何,意圖在將信息發送回片段時都會丟失信息。 – mapodev
您是否檢查onMenuItemSelected方法上是否設置了LAT和LON? – vsm
是的,它們是Log.i(「RUN」,「」+(long)(itemizedOverlay.getLon()));'告訴我一個數字 – mapodev