【问题标题】:How to receive data from Dialog Fragment in another fragment's setOnMapLongClickListener listener如何在另一个片段的 setOnMapLongClickListener 侦听器中从对话框片段接收数据
【发布时间】:2019-09-23 15:09:17
【问题描述】:

所以这是我的公共视图 onCreateView 方法。我想在用户长按地图时打开对话框窗口,然后从对话框中获取数据,然后根据用户输入对话框的数据设置 .tittle。我尝试使用界面进行操作,但是当我需要它时它没有数据。 getInput() 是我想从 Dialog 片段接收数据的地方。

            mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
                @Override
                public void onMapLongClick(LatLng latLng) {
                    //FragmentManager fm = getActivity().getSupportFragmentManager();
                    DialogMap dial = new DialogMap();
                    dial.setTargetFragment(MapFragment.this, 1);
                    dial.show(getFragmentManager(), "Add a catch");

                        mMap.addMarker(new MarkerOptions()
                                .position(latLng)
                                .title(getinput())
                                .snippet("Your marker snippet")
                                .icon(BitmapDescriptorFactory.fromResource(R.drawable.fish_icon_map)));

这是我的对话框片段。

【问题讨论】:

  • 不要将您的代码发布为图片。

标签: android google-maps android-fragments


【解决方案1】:

您在 DialogMap 中错过了对话侦听器的初始化。

公开 onDialogOk 对话框。 (你必须在使用前初始化它)

dialog = (onDialogOk)getTargetFragment()

所以在 onCreateView() 里面,你可以初始化它。

【讨论】:

  • 我这里有 @Override public void onAttach(Context context) { super.onAttach(context);尝试 { dialog = (onDialogOk) getTargetFragment(); } 捕捉 (ClassCastException e){} }
  • public void onMapLongClick(LatLng latLng) 将此 LatLng 存储在全局变量中。现在,在您已经实现 onDialogOK 接口的片段中,您已经在此方法中覆盖了 sendInput(params) 方法,再次设置标记 mMap.addMarker(new MarkerOptions() .position(latLng) .title(Title from params ) .sn-p( "你的标记 sn-p") .icon(BitmapDescriptorFactory.fromResource(R.drawable.fish_icon_map)));
猜你喜欢
  • 2017-06-09
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2013-07-11
  • 2013-07-31
  • 1970-01-01
相关资源
最近更新 更多