二进制 XML 文件第 21 行:膨胀 class 片段时出错
Binary XML file line #21: Error inflating class fragment
我有一个地图片段 class,我在上面添加了一个按钮。当我点击它时,我用一个简单的文本视图和保存按钮调用另一个片段 class。单击保存后,我想返回到我的 mapfragment class。现在,当我单击保存并返回时,它会抛出错误。错误是当它膨胀 class > 只是想知道我从后台弹出时是否做错了什么。我只想删除最后一个并返回到我的地图。
我的地图布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
</fragment>
</LinearLayout>
MapFragment如下:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.maplayout,container,false);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getChildFragmentManager();
fragment = (MapFragment) fm.findFragmentById(R.id.map);
if (fragment == null) {
fragment = MapFragment.newInstance();
fm.beginTransaction().replace(R.id.map, fragment).commit();
}
}
后退方法:
FragmentManager fm = getActivity().getFragmentManager();
fm.popBackStack("TEXT_FRAGMENT", FragmentManager.POP_BACK_STACK_INCLUSIVE);
fm.beginTransaction()
.replace(R.id.map_tab,
mapFragment,
"maptab")
.addToBackStack("maptab")
.commit();
错误是:片段没有视图。
map_tab 是添加了 MapFragment 的选项卡。地图片段添加在此之上。
编辑: 在后面的方法中我添加了 fm.popBackStack("TEXT_FRAGMENT", FragmentManager.POP_BACK_STACK_INCLUSIVE
但是当我返回我的 Map Fragment 并且在膨胀时我得到了错误。
不要提交新片段。反而,
查看getFragmentManager().popBackStack()
方法(有几种可供选择)
http://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()
终于可以使用了。在添加新片段之前必须删除 mapfragment。
我有一个地图片段 class,我在上面添加了一个按钮。当我点击它时,我用一个简单的文本视图和保存按钮调用另一个片段 class。单击保存后,我想返回到我的 mapfragment class。现在,当我单击保存并返回时,它会抛出错误。错误是当它膨胀 class > 只是想知道我从后台弹出时是否做错了什么。我只想删除最后一个并返回到我的地图。 我的地图布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
</fragment>
</LinearLayout>
MapFragment如下:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.maplayout,container,false);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getChildFragmentManager();
fragment = (MapFragment) fm.findFragmentById(R.id.map);
if (fragment == null) {
fragment = MapFragment.newInstance();
fm.beginTransaction().replace(R.id.map, fragment).commit();
}
}
后退方法:
FragmentManager fm = getActivity().getFragmentManager();
fm.popBackStack("TEXT_FRAGMENT", FragmentManager.POP_BACK_STACK_INCLUSIVE);
fm.beginTransaction()
.replace(R.id.map_tab,
mapFragment,
"maptab")
.addToBackStack("maptab")
.commit();
错误是:片段没有视图。
map_tab 是添加了 MapFragment 的选项卡。地图片段添加在此之上。
编辑: 在后面的方法中我添加了 fm.popBackStack("TEXT_FRAGMENT", FragmentManager.POP_BACK_STACK_INCLUSIVE
但是当我返回我的 Map Fragment 并且在膨胀时我得到了错误。
不要提交新片段。反而,
查看getFragmentManager().popBackStack()
方法(有几种可供选择)
http://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()
终于可以使用了。在添加新片段之前必须删除 mapfragment。