【问题标题】:error using maps in fragment在片段中使用地图时出错
【发布时间】:2013-11-16 01:07:13
【问题描述】:

当我尝试打开我的片段“activityMapa”时出现此错误,显然无法扩充我的 xml 文件:

11-15 21:58:39.769: E/AndroidRuntime(2432): FATAL EXCEPTION: main
11-15 21:58:39.769: E/AndroidRuntime(2432): android.view.InflateException: Binary XML file line #2: Error inflating class fragment
11-15 21:58:39.769: E/AndroidRuntime(2432):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
11-15 21:58:39.769: E/AndroidRuntime(2432):     at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
11-15 21:58:39.769: E/AndroidRuntime(2432):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
11-15 21:58:39.769: E/AndroidRuntime(2432):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
11-15 21:58:39.769: E/AndroidRuntime(2432):     at com.example.despegarteproject.ActivityMapa.onCreateView(ActivityMapa.java:43)
11-15 21:58:39.769: E/AndroidRuntime(2432):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:832)
11-15 21:58:39.769: E/AndroidRuntime(2432):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036)

这就是我在 onCreateView 中所做的:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_mapa, null);


    context = getActivity();

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

    mapa.setOnMarkerClickListener(new OnMarkerClickListener() {

        public boolean onMarkerClick(Marker marker) {
            Toast.makeText(context, "Marcador pulsado:\n" + marker.getTitle(), Toast.LENGTH_SHORT).show();
            return false;
        }
    });

    moveTo(40.417325, -3.683081);
    addMarker(40.417325, -3.683081, "Madrid, acá");

    return view;
}

和我的 xml 文件“acitivty_mapa”:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment"/>

【问题讨论】:

    标签: android map


    【解决方案1】:

    创建一个派生自 SupportMapFragment 的类,您无需扩充布局。

    public class MyMapFragment extends SupportMapFragment {
    
        private GoogleMap map;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            return super.onCreateView(inflater, container, savedInstanceState);
        }
    
        @Override
        public void onResume() {
            super.onResume();
            map = getMap();
        }
    

    然后,当您需要在 Activity 的布局中使用它时,您可以在 Activity 的布局 xml 中引用您的类

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.example.despegarteproject.MyMapFragment" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多