android.view.InflateException:二进制XML文件第20行:膨胀类片段时出错

android.view.InflateException:二进制XML文件第20行:膨胀类片段时出错,android,xml,google-maps,fragment,Android,Xml,Google Maps,Fragment,我在stackoverflow中发现了类似的主题,但对我没有帮助。 我正在使用片段显示google地图,它在获得另一个片段并返回后崩溃。 换句话说,谷歌地图只显示一次,然后崩溃。 这是密码 public class MapTabMainFragment extends BaseFragment { private AdView adView; @Override public View onCreateView(LayoutInflater inflater, View

我在stackoverflow中发现了类似的主题,但对我没有帮助。 我正在使用片段显示google地图,它在获得另一个片段并返回后崩溃。 换句话说,谷歌地图只显示一次,然后崩溃。 这是密码

public class MapTabMainFragment extends BaseFragment {
    private AdView adView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = null;
        try {
            view = inflater.inflate(R.layout.fragment_map_main, container,
                    false);
        } catch (Exception e) {
            e.printStackTrace();
        }

        initComponents(view);
        initValues();
        initListeners();

        return view;
    }

    public void initComponents(View view) {
        adView = (AdView) view.findViewById(R.id.adView1);
    }

    public void initValues() {
        AdRequest re = new AdRequest();
        adView.loadAd(re);
    }

    public void initListeners() {

    }
}

 public class BaseFragment extends Fragment {

    public BottomTabActivity mActivity;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mActivity = (BottomTabActivity) this.getActivity();
    }

    public boolean onBackPressed() {
        return false;
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {

    }
}
当我试图捕捉异常时,它是

android.view.InflateException:二进制XML文件第20行:膨胀类片段时出错


在研究stackoverflow之后,我自己解决了这个问题。 这与嵌套片段问题有关。 我删除了xml中的映射片段,并为其放置了框架,然后以编程方式添加片段。 它就像一个符咒。
谢谢你的努力。

我在研究了stackoverflow之后自己解决了这个问题。 这与嵌套片段问题有关。 我删除了xml中的映射片段,并为其放置了框架,然后以编程方式添加片段。 它就像一个符咒。
感谢您的所有努力。

您正在尝试在BaseFragment类中实际创建活动之前访问它

mActivity = (BottomTabActivity) this.getActivity();
相反,重写onActivityCreated方法并在那里执行

@Override
public void onActivityCreated(Bundle savedInstanceState)
{
    mActivity = (BottomTabActivity) this.getActivity();
}

您正在尝试在BaseFragment类中实际创建活动之前访问它

mActivity = (BottomTabActivity) this.getActivity();
相反,重写onActivityCreated方法并在那里执行

@Override
public void onActivityCreated(Bundle savedInstanceState)
{
    mActivity = (BottomTabActivity) this.getActivity();
}

编辑应用程序的AndroidManifest.xml文件,并在元素中添加以下声明。这嵌入了应用程序编译时使用的Google Play服务版本

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

->这解决了我的问题。

编辑应用程序的AndroidManifest.xml文件,并在元素中添加以下声明。这嵌入了应用程序编译时使用的Google Play服务版本

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

->这解决了我的问题。

XML中不能有嵌套片段。你应该用代码来做。 最好的方法是创建一个FrameLayout,并在运行时用片段替换它

假设XML如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/inquiryLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".InquiryFragment" >

<FrameLayout
    android:id="@+id/contentFrame"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true" >

</FrameLayout>
 </RelativeLayout>

就这样。

不能在XML中嵌套片段。你应该用代码来做。 最好的方法是创建一个FrameLayout,并在运行时用片段替换它

假设XML如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/inquiryLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".InquiryFragment" >

<FrameLayout
    android:id="@+id/contentFrame"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true" >

</FrameLayout>
 </RelativeLayout>

就是这样。

而不是放xmlns:android=http://schemas.android.com/apk/res/android 在线性布局标签中,将其放入而不是放入xmlns:android=http://schemas.android.com/apk/res/android 在线性布局标记中,将其放入XML文件中的错误中。你能发布它吗?@Szymon-我已经发布了XML文件错误在你的XML文件中。你能发布它吗?@Szymon-我已经发布了XML文件