我有一个托管两个片段的活动。一个片段在各个字段中向用户提供一些信息。另一个片段应该显示一个Map。
对于托管地图的片段,我需要能够添加自定义逻辑以显示标记和其他一些我想在应用程序的其他位置重用的东西。在没有在xml中定义片段的情况下创建地图的最佳方法是:
<fragment
class="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
谢谢, 森
编辑:
我现在正在使用嵌套片段,不确定这是否是处理此问题的最佳方法?我的mapfragment现在是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment" />
</LinearLayout>
和片段代码是:
public class ViewCurrentMapFragment extends Fragment implements View.OnClickListener {
public static final String TAG = "MAP_FRAGMENT";
private GoogleMap map;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_view_current_map, container, false);
return rootView;
}
private void getCurrentMarkers() {
// Getting reference to the SupportMapFragment of activity_main.xml
SupportMapFragment smf = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map));
map = smf.getMap();
}
@Override
public void onClick(View v) {
}
@Override
public void onResume() {
super.onResume();
getCurrentMarkers();
}
}
我现在遇到的问题是smf.getMap()返回null。有什么想法吗?
EDIT2:
通过改变来实现它:
com.google.android.gms.maps.MapFragment
to
com.google.android.gms.maps.SupportMapFragment
答案 0 :(得分:1)
也许:
<fragment
class="com.mycompany.MyCustomFragmentExtendingMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
或像这里一样嵌套片段:http://code.google.com/p/gmaps-api-issues/issues/detail?id=5064#c1