【问题标题】:SupportMapFragment on DialogFragmentDialogFragment 上的 SupportMapFragment
【发布时间】:2013-06-06 13:11:02
【问题描述】:

我需要将SupportMapFragment嵌入Dialog。这是我能想到的最好的:

public class SupportMapFragmentDialog extends DialogFragment {

    private final SupportMapFragment fragment;

    public SupportMapFragmentDialog() {
        fragment = new SupportMapFragment();
        setTargetFragment(fragment, 1);
    }

    @Override
    public View onCreateView(final LayoutInflater inflater,
            final ViewGroup container, final Bundle savedInstanceState) {
        return fragment.onCreateView(inflater, container, savedInstanceState);
    }

    public SupportMapFragment getFragment() {
        return fragment;
    }

}

但是,当我这样称呼时:

final SupportMapFragmentDialog dialog = new SupportMapFragmentDialog();
dialog.show(getSupportFragmentManager(), "Historico");

我明白了:

如何在对话框中查看地图?

该应用程序还有另一个 SupportMapFragment 正在运行奇迹,因此它与配置没有任何关系。

【问题讨论】:

  • logcat显示有什么问题吗?
  • 不。什么都没有。

标签: android dialog google-maps-android-api-2 supportmapfragment


【解决方案1】:

你可以通过这个在对话框中显示地图片段

public class DialogMapFragment extends DialogFragment {

    private SupportMapFragment fragment;

    public DialogMapFragment() {
        fragment = new SupportMapFragment();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.mapdialog, container, false);
        getDialog().setTitle("");
        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
        transaction.add(R.id.mapView, fragment).commit();

        return view;
    }



    public SupportMapFragment getFragment() {
        return fragment;
    }
}

R.layout.mapdialog:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="0dp" >

    <FrameLayout
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

</RelativeLayout>

【讨论】:

    【解决方案2】:

    最后我最终在常规Dialog中使用MapView而不是SupportMapFragment

    这是我的代码:

    final Historico h = adapter.getItem(arg2 - 1);
    if (mv.getParent() != null) {
        ((ViewGroup) mv.getParent()).removeView(mv);
    }
    final Dialog d = new Dialog(HistorialScreen.this);
    d.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
    d.requestWindowFeature(Window.FEATURE_NO_TITLE);
    d.setContentView(mv);
    mv.getMap().clear();
    mv.getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(h.getPosicion(), 17));
    final MarkerOptions options = new MarkerOptions();
    options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN));
    options.position(h.getPosicion());
    mv.getMap().addMarker(options);
    d.show();
    

    它按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多