何が間違っているのかわかりません。ユーザーをGoogleマップに送り、フラグメントから場所を選択したいと思います。しかし、場所を保存した後、ユーザーはフラグメントに戻りますが、保存されたデータは失われます。
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 によって呼び出されますが、インテントには私の 2 つの文字列 LON と LAT に関する情報がありません。
ここで何が問題なのですか?