使用片段地图错误 [英] error using maps in fragment
本文介绍了使用片段地图错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个错误,当我尝试打开我的片段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:机器人=http://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:机器人=http://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屋!
查看全文