使用片段地图错误 [英] error using maps in fragment

查看:126
本文介绍了使用片段地图错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个错误,当我尝试打开我的片段activityMapa,显然不能夸大我的xml文件:

  21 11-15:58:39.769:E / AndroidRuntime(2432):致命异常:主要
11-15 21:58:39.769:E / AndroidRuntime(2432):android.view.InflateException:二进制XML文件行#2:错误充气类片段
11-15 21:58:39.769:E / AndroidRuntime(2432):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
11-15 21:58:39.769:E / AndroidRuntime(2432):在android.view.LayoutInflater.inflate(LayoutInflater.java:466)
11-15 21:58:39.769:E / AndroidRuntime(2432):在android.view.LayoutInflater.inflate(LayoutInflater.java:396)
11-15 21:58:39.769:E / AndroidRuntime(2432):在android.view.LayoutInflater.inflate(LayoutInflater.java:352)
11-15 21:58:39.769:E / AndroidRuntime(2432):在com.example.despegarteproject.ActivityMapa.​​onCreateView(ActivityMapa.​​java:43)
11-15 21:58:39.769:E / AndroidRuntime(2432):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:832)
11-15 21:58:39.769:E / AndroidRuntime(2432):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036)

这是我在我的onCreateView正在做的:

  @覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
        捆绑savedInstanceState){
    查看查看= inflater.inflate(R.layout.activity_mapa,NULL);
    上下文= getActivity();    地图=((MapFragment)getFragmentManager()findFragmentById(R.id.map)。)的GetMap();    mapa.setOnMarkerClickListener(新OnMarkerClickListener(){        公共布尔onMarkerClick(标记标记){
            Toast.makeText(背景下,Marcador pulsado:\\ n+ marker.getTitle(),Toast.LENGTH_SHORT).show();
            返回false;
        }
    });    的moveTo(40.417325,-3.683081);
    addMarker(40.417325,-3.683081,马德里及ACA);    返回视图。
}

和我的xml文件acitivty_mapa

 <?XML版本=1.0编码=UTF-8&GT?;
<片段的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:ID =@ + ID /图
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    类=com.google.android.gms.maps.SupportMapFragment/>


解决方案

创建一个从SupportMapFragment派生的类,你不需要充气的布局。

 公共类MyMapFragment扩展SupportMapFragment {    私人GoogleMap的地图;    @覆盖
    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
        返回super.onCreateView(充气器,容器,savedInstanceState);
    }    @覆盖
    公共无效onResume(){
        super.onResume();
        地图=的GetMap();
    }

然后,当您需要在活动的布局,利用这一点,你会活动的布局XML中引用类

 <片段的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:ID =@ + ID /图
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    类=com.example.despegarteproject.MyMapFragment/>

i am having this error when i try to open my fragment "activityMapa", apparently can't inflate my xml file:

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)

this is what i am doing in my 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;
}

and my xml file "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"/>

解决方案

Create a class that derives from SupportMapFragment, and you won't need to inflate a layout.

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();
    }

Then, when you need to use this in your activity's layout, you'd reference your class within the activity's layout 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" />

这篇关于使用片段地图错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆