java - 安卓.view.InflateException : Binary XML file line #33: Error inflating class fragment

标签 java android xml google-maps android-fragments

我的 Google map 应用程序有点问题。我的应用程序中有三个按钮; “打开谷歌地图”、“相机”和“触摸”。当应用程序启动时,它直接进入谷歌地图屏幕,到目前为止一切正常,但是当用户在谷歌地图屏幕上并再次点击谷歌地图按钮时,应用程序崩溃,我的 logcat 中出现以下错误;

02-28 11:39:25.844: E/AndroidRuntime(2782): FATAL EXCEPTION: main
02-28 11:39:25.844: E/AndroidRuntime(2782): Process: com.GoogleMapsapplication.main, PID: 2782
02-28 11:39:25.844: E/AndroidRuntime(2782): android.view.InflateException: Binary XML file line #33: Error inflating class fragment
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at com.augmentedthorpepark.main.FragmentGoogleMap.onCreateView(GoogleMapsFragment.java:50)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.app.Fragment.performCreateView(Fragment.java:1700)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.app.BackStackRecord.run(BackStackRecord.java:684)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.os.Handler.handleCallback(Handler.java:733)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.os.Handler.dispatchMessage(Handler.java:95)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.os.Looper.loop(Looper.java:136)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.app.ActivityThread.main(ActivityThread.java:5146)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at java.lang.reflect.Method.invokeNative(Native Method)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at java.lang.reflect.Method.invoke(Method.java:515)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at dalvik.system.NativeStart.main(Native Method)
02-28 11:39:25.844: E/AndroidRuntime(2782): Caused by: java.lang.IllegalArgumentException: Binary XML file line #33: Duplicate id 0x7f090035, tag null, or parent id 0x0 with another fragment for com.google.android.gms.maps.SupportMapFragment
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:290)
02-28 11:39:25.844: E/AndroidRuntime(2782):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)

它说我的 xml 文件中的第 33 行有错误,但根据我的经验和我从在线搜索中发现的内容,这就是我应该如何使用 Google map ;

我的带有 Google map 代码的 xml 文件;

<fragment
    android:id="@+id/googlemap"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

此外,我正在处理 fragment 。所以我无法扩展 Activity、FragmentActivity 等。

public class GoogleMapsFragment extends Fragment {
 .....
}

有什么办法可以修复这个错误,谢谢。

最佳答案

根据您的 logcat 输出,您似乎添加了两次相同的 Fragment。这会导致 IllegalStateExceptionIllegalArgumentException

解决方案是首先检查哪个Fragment当前在前台,如果已经存在则避免添加相同的:

Fragment f = (Fragment)getFragmentManager().findFragmentByTag("xyz_fragment");
if (f!=null && !f.isVisible() && !f.isAdded()) {

    ....

}

关于java - 安卓.view.InflateException : Binary XML file line #33: Error inflating class fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28781390/

相关文章:

java - 在 Java 类中进行模拟

java - 不能在子类的构造函数中抛出异常

android - 在 Android 中将时间戳转换为日期?

java - JAXB 为没有内容的标签设置一个值

php - 从非 XML 文档进行 XML 解析

java - 修剪从 mongoDB 收到的 json 中的双引号

java - 嵌套的正则表达式和替换

java - 为什么单击图像后我的应用程序崩溃

java - 如何开发安卓锁屏的替代品

xml - linux apache xml : setup cron-job/automation to retrieve xml