在DialogFragment中向map添加标记:无法从Fragment转换为MapFragment

时间:2014-08-07 18:40:20

标签: android google-maps android-fragments

我的地图对话框有这个片段类:

public static class MapDialogFragment extends DialogFragment {
        public static MapDialogFragment newInstance(float latitude, float longitude) {
            MapDialogFragment frag = new MapDialogFragment();
            Bundle args = new Bundle();
            args.putFloat("latitude", latitude);
            args.putFloat("longitude", longitude);
            frag.setArguments(args);
            return frag;
        }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        float latitude = getArguments().getFloat("latitude");
        float longitude = getArguments().getFloat("longitude");

        View view = getActivity().getLayoutInflater().inflate(R.layout.map_dialog, null);

        return new AlertDialog.Builder(getActivity())
        .setView(view)
        .setTitle("Store Map")
        .setNegativeButton("Done",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();

                    }
                })
                .create();
        }
    }

这会在对话框片段中拉出地图,这是自定义的膨胀视图:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.MapFragment"/>

当我尝试向地图添加标记时(在Developers Guide之后),我添加了这一行:

storeMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

我收到此错误:Cannot cast from Fragment to MapFragment

在我的活动中,我确实有:private GoogleMap storeMap;

如何正确添加DialogFragment标记?

1 个答案:

答案 0 :(得分:1)

确保您没有将支持库片段(android.support.v4.app.Fragment与本机片段(android.app.Fragment)混合 - 它们都需要同步。如果您使用支持库片段,则应使用{{ 3}}代替MapFragment。