现在地图加载下面的代码,但我希望能够以编程方式与它进行交互(例如,通过调用.setMyLocationEnabled()来设置我的位置)。到目前为止,我所尝试的一切都会导致崩溃。这是从MainActivity管理的片段。
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapFrag extends Fragment {
private GoogleMap map;
public MapFrag(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_map, container, false);
}
}
XML文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="***.fragment">
<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"/>
</FrameLayout>
如何在片段中实例化GoogleMap以与其进行交互?
答案 0 :(得分:1)
我不知道你为什么要在片段中加载片段。嵌套片段非常棘手,只适用于API Level 17+或android-support-v4
库中的片段backport。
相反,让您的活动加载MapFragment
(如果您正在使用片段backport,则加载SupportMapFragment
)。如果您想在该片段中使用更多业务逻辑,则子类MapFragment
(如果您正在使用片段backport,则为SupportMapFragment
)并让活动加载子类。
如果您有几年的Android经验并且确实想要使用嵌套片段,则需要确定要使用哪些片段实现,并同步它们。现在,您的Java代码有Fragment
使用片段backport(android.support.v4.app.Fragment
),但您尝试加载MapFragment
而不是SupportMapFragment
。
另外,删除MapFrag
构造函数或链到超类构造函数。