片段页面映射Activity然后获取位置并将其发送回片段页面

时间:2018-04-13 17:56:54

标签: android google-maps

Fragment页面有一个EditText,我设置了OnClickListener。当我单击EditText时,它将转到地图活动。纬度在地图活动中获得并将其发送回片段。当我回到片段时,纬度应该显示在EditText上。但是,EditText上没有任何内容。我该如何解决这个问题?

final EditText latitude=(EditText)getActivity().findViewById(R.id.latitude);
    latitude.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            SharedPreferences sharedPreferences=getActivity().getSharedPreferences("test", Context.MODE_PRIVATE);
            String lat=sharedPreferences.getString("latitude","");
            String lon=sharedPreferences.getString("longitude","");

            Intent intent=new Intent(getContext(),MapsActivity.class);
            startActivity(intent);

            latitude.setText(lat);

        }
    });

这是片段页面中的代码。         public void onMapReady(GoogleMap googleMap){         mMap = googleMap;

    LatLng hk=new LatLng(latitude,longitude);
    final Marker Place=mMap.addMarker(new MarkerOptions().position(hk).title("HK").draggable(true));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(hk));

    mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
        @Override
        public void onMarkerDragStart(Marker marker) {
            LatLng location=Place.getPosition();
            Double lat=location.latitude;
            String lat2=lat.toString();
            Double lon=location.longitude;
            String lon2=lon.toString();

            SharedPreferences sharedPreferences=getSharedPreferences("test", MODE_PRIVATE);
            sharedPreferences.edit().putString("latitude",lat2).putString("longitude",lon2).commit();

            Place.setTitle("latitude"+lat2+"\n"+"longitude"+lon2);

        }

        @Override
        public void onMarkerDrag(Marker marker) {

        }

        @Override
        public void onMarkerDragEnd(Marker marker) {

        }
    });











    }

这是地图活动中的代码。

1 个答案:

答案 0 :(得分:0)

使用startActivityForResult()

可以通过多种方式实现此目的
final EditText latitude=(EditText)getActivity().findViewById(R.id.latitude);
    latitude.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent=new Intent(getContext(),MapsActivity.class);
            startActivityForResult(intent,001);
        }
    });

在此活动中,将此方法传递给您的片段。

  Fragment your_fragment;

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        fragmenet.onActivityResult(requestCode, resultCode, data);
    }

在你的片段类中输入此代码

  @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        latitude.setText(data.getDoubleExtra("lat",0)+ "," +data.getDoubleExtra("lng",0));
    }

在下一个活动中

mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
        @Override
        public void onMarkerDragStart(Marker marker) {
            LatLng location=Place.getPosition();
            Intent intent = new Intent();
            intent.putExtra("lat", location.latitude);
            intent.putExtra("lat", location.longitude);
            setResult(001, intent);
            finish();
        }

        @Override
        public void onMarkerDrag(Marker marker) {

        }

        @Override
        public void onMarkerDragEnd(Marker marker) {

        }
    });