0

何が間違っているのかわかりません。ユーザーを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 に関する情報がありません。

ここで何が問題なのですか?

4

1 に答える 1

0

交換:

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

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

よろしく

于 2012-12-17T14:05:04.580 に答える