当前位置: 首页 > 知识库问答 >
问题:

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

鲜于凯康
2023-03-14

片段页面有一个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);

        }
    });

这是片段页面中的代码。公共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个答案

刘野
2023-03-14

有多种方法可以实现这一点,如使用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) {

        }
    });
 类似资料:
  • 我有一个活动,它从其他活动中获取一些字符串: 这行得通。 从这个活动< code>ShowPoints中,我想将接收到的字符串< code>points发送到它的片段< code>PointsOnMap 为此,我创建了并执行以下操作: 但是,片段<code>PointsOnMap<code>的<code>字符串点 我想知道我做错了什么。我在这里阅读了其他一些帖子,似乎我正在以正确的方式做到这一点。

  • 在适配器中 Holder.NameExam2.SetOnClickListener(新建View.OnClickListener(){ 成碎片 @覆盖公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ 它在getString()中调用空指针异常。如何解决。

  • 我想在收到一些HTTP请求的响应后,更新几个<code>片段 。-- 活动 适配器 碎片样本 日志显示位置0,1处的片段的<code>updateData</code>工作良好。但是对于位置2处的片段,它会导致错误。 我发现的区别是适配器没有为位置2调用,这意味着没有调用的。因此不存在。 我的直觉告诉我,问题一定来自适配器的工作流或fragmentManager事务。但是作为一个Android初学

  • 我有PushNotificationService onMes和我的方法 如果我在程序中,一个通知来自 但是,当程序关闭时,当我在后台单击通知时,它不会转到我想要的页面,而只会转到主页。 我想当ı点击notifi开放活动 } 我的主要活动 } 这是我的密码

  • 我目前正在制作一个android应用程序,我想在activity和fragment之间传递一个日期。我的活动有一个按钮,打开片段:DatePickerFragment。 在我的活动中,我显示了一个日期,我想用片段修改它。因此,我想将日期传递给datepicker,并将其发送回活动。 我已经尝试了很多解决方案,但都没有奏效。简单的方法是传递一个参数,但这不能用片段来完成。

  • 我需要从 MainActivity 向 Android Google 地图(片段)添加标记 这是我的代码; 我想在这里添加一个标记: 所有这些都是因为我想从我的主要活动中与我的地图进行交互,其中我有一些按钮和编辑文本 主要活动 这是它的样子,已经有了一个标记,但是我需要在MainActivity中设置它,而不是从map activity中调用它