android.view.InflateException:二进制XML文件第20行:膨胀类片段时出错
我在stackoverflow中发现了类似的主题,但对我没有帮助。 我正在使用片段显示google地图,它在获得另一个片段并返回后崩溃。 换句话说,谷歌地图只显示一次,然后崩溃。 这是密码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
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文件