gpt4 book ai didi

android - Google Map V2 android 错误 Inflating class fragment 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:24:28 26 4
gpt4 key购买 nike

我正在创建一个带有选项卡的应用程序,我在其中一个选项卡中有 map ,当我从它打开 map 时它工作正常,当我访问其他一些选项卡时它也工作正常,但是当我回到 map 时选项卡应用程序因此错误而崩溃。

04-09 14:10:43.866: E/AndroidRuntime(28184): android.view.InflateException: Binary XML file line #42: Error inflating class fragment
04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
04-09 14:10:43.866: E/AndroidRuntime(28184): at com.research.fragmenttabstudy.tabA.TodaysDealLocation.onCreateView(TodaysDealLocation.java:43)

这是我的代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("err","todaysdeal location");
Log.d("err","todaysdeal location"+inflater.toString()+" "+container.toString()+" ");
super.onCreateView(inflater, container, savedInstanceState);
// map.clear();
View view = inflater.inflate(R.layout.todays_deal_location, container,
false);

Log.d("err",view.toString());
back = (ImageView) view.findViewById(R.id.list);
back.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

// TODO Auto-generated method stub
// Constants.passcode_chk = 0;
// finish();
mActivity.popFragments();
}
});
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
map = ((SupportMapFragment) getFragmentManager().findFragmentById(
R.id.mapp)).getMap();
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);

}

xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/topbar" />

<!-- <ImageView -->
<!-- android:id="@+id/deallistmenu" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:layout_marginLeft="5dp" -->
<!-- android:layout_marginTop="9dp" -->
<!-- android:src="@drawable/deallist_menubtn" /> -->

<ImageView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="7dp"
android:layout_marginTop="7dp"
android:src="@drawable/map_list" />

<RelativeLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/imageView1"
android:layout_marginTop="-4.8dp" >

<!-- box layout.................................................................... -->


<!-- box layout.................................................................... -->

<fragment
android:id="@+id/mapp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tv_location"
android:name="com.google.android.gms.maps.SupportMapFragment" />

<!-- <ZoomControls -->
<!-- android:id="@+id/zoomControls" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:layout_alignParentBottom="true" -->
<!-- android:layout_alignParentLeft="true" -->
<!-- android:layout_marginBottom="30dp" -->
<!-- android:layout_marginLeft="100dp" /> -->

</RelativeLayout>

<TextView
android:id="@+id/barTitle"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:gravity="center"
android:lines="1"
android:maxLines="1"
android:paddingLeft="50dip"
android:paddingRight="55dip"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white"
android:textSize="18dp" />

</RelativeLayout>

最佳答案

你的问题是你已经在 XML 中声明了 google maps v2 fragment ,所以每次你膨胀 XML 时它都会产生一个新 fragment 。但是, fragment 的 id 是硬编码在 XML 中的,因此它将尝试创建与已运行的 fragment 具有相同 id 的新 fragment 。两个正在运行的 fragment 不能具有相同的 ID,因此应用程序会崩溃。

解决此问题的最佳方法是以编程方式制作 map fragment 。可以在 Google map 示例项目的 ProgrammaticDemoActivity.java 部分找到一个很好的例子。

但是,如果出于某种原因您必须在 XML 中声明您的 fragment ,您可以通过在离开 View 时杀死旧的 map fragment 来使其正常工作,以便创建新的 map fragment 。

你可以这样做:

private void killOldMap() {
SupportMapFragment mapFragment = ((SupportMapFragment) getSherlockActivity()
.getSupportFragmentManager().findFragmentById(R.id.map));

if(mapFragment != null) {
FragmentManager fM = getFragmentManager();
fM.beginTransaction().remove(mapFragment).commit();
}

}

然后从 onDetach()onDestroyView() 调用它以确保旧 map 被杀死。

如您所见,这是一种 hack,您最好只是以编程方式制作您的应用程序,而不是使用 XML。

关于android - Google Map V2 android 错误 Inflating class fragment 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15897441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com