如何在片段

时间:2016-06-23 03:32:38

标签: java android android-fragments google-maps-android-api-2

我想使用扩展片段

在android片段中制作地图

这是我的代码:地图没有出现,系统强制关闭

  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view =  inflater.inflate(R.layout.gmaps, container, false);

        SupportMapFragment mapFragment = ((SupportMapFragment) getActivity().getSupportFragmentManager() .findFragmentById(R.id.map));
        mapFragment.getMapAsync((OnMapReadyCallback) this.getActivity());

        btnFindPath = (Button) view.findViewById(R.id.btnFindPath);
        etOrigin = (EditText) view.findViewById(R.id.etOrigin);
        etDestination = (EditText) view.findViewById(R.id.etDestination);

        btnFindPath.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendRequest();
            }
        });

        return view;

请帮助我,谢谢

3 个答案:

答案 0 :(得分:1)

您可以尝试以下代码:

 @Override
 public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Log.i("onActivityCreated", "onActivityCreated");
    if(supportMapFragment==null){
        supportMapFragment = (SupportMapFragment)getChildFragmentManager().findFragmentById(R.id.map);

        supportMapFragment.getMapAsync(new OnMapReadyCallback() {
           @Override
             public void onMapReady(GoogleMap googleMap) {
             mGoogleMap = googleMap;

            loadMapAtPosition(googleMap, CAMERA_INITIAL_LATITUDE, CAMERA_INITIAL_LONGITUDE);
        }
    });
 }

.....

private void loadMapAtPosition(GoogleMap googleMap, double latitude,    double longitude){     googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 6.0f)); }

答案 1 :(得分:1)

如果您想在Map中使用Fragment,那就很简单。

试试这个

在你Fragment班。

 GoogleMap map = ((SupportMapFragment) getFragmentManager()
                .findFragmentById(R.id.map)).getMap();

并在your xml

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

答案 2 :(得分:1)

  

如果您在片段中使用谷歌地图,那么您应该使用地图   像这样的对象。你必须使用 getChildFragmentManager()来查找   片段

    <fragment
        android:id="@+id/main_map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" >
    </fragment>

     SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager()
                    .findFragmentById(R.id.main_map);