0

我正在开发一个使用片段选项卡的应用程序,我的一个片段使用 Google Maps V2“ SupportMapFragment

public class A extends Fragment {
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) 
   {
    View view = null;
    view = inflater.inflate(R.layout.all_coffee_shops_view, container, false);
    map = ((SupportMapFragment) getActivity().getSupportFragmentManager()
                .findFragmentById(R.id.map)).getMap();
   }
}

我的xml:

<RelativeLayout
   android:id="@+id/map_container"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">

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

我从这个 A 片段(A->B)调用 B 片段,当我从 B-> 回来时,A 片段onCreateView抛出异常,“android.view.InflateException:二进制 XML 文件行 #132:膨胀类片段时出错"

4

2 回答 2

6

一旦fragment创建了地图,当再次回到这个片段时,片段onCreateView()被称为这就是为什么你要强制关闭

在包含地图的片段中尝试一次

@Override
public void onDestroyView() {
    super.onDestroyView();

    Fragment f = getFragmentManager().findFragmentById(R.id.map);
    if (f != null) 
        getFragmentManager().beginTransaction().remove(f).commit();
}

请评论我的结果

于 2013-10-15T09:01:54.797 回答
2
public void onDestroyView() {
    super.onDestroyView();
    Log.d(TAG, "onDestroyView");

    Fragment f = getActivity()
            .getSupportFragmentManager().findFragmentById(R.id.map);
    if (f != null) {
        getActivity().getSupportFragmentManager()
        .beginTransaction().remove(f).commit();
    }
}
于 2013-10-15T09:21:48.657 回答