【发布时间】:2014-04-19 16:22:34
【问题描述】:
我在另一个片段中有一个地图片段
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"
/>
</FrameLayout>
我在 oncreateview 中初始化地图
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.event_fragment, null);
try{
events = new ArrayList<EventsModel>();
try {
initilizeMap();
} catch (Exception e) {
e.printStackTrace();
}
double latitude = 24.875419;
double longitude = 66.993293;
CameraPosition cameraPosition = new CameraPosition.Builder().target(
new LatLng(latitude, longitude)).zoom(12).build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
loadEvents().execute();
}catch(Exception e){
}
return view;
}
它工作正常,但是当我按下返回按钮并重新打开这个片段时它崩溃了
04-19 21:18:21.803: E/AndroidRuntime(31612): Caused by: java.lang.IllegalArgumentException: Binary XML file line #6: Duplicate id 0x7f050006, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.MapFragment
然后我用谷歌搜索它并把它放在 ondestroy
Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
上述问题已解决,但现在它在重新打开包含 mapfragment 的片段时给了我空指针,可能是因为我用上面的代码删除了它,但现在有什么解决方案?
【问题讨论】:
-
@WK 尝试按照我的回答并给我反馈。
-
但是这里你需要实现
SupportMapFragment而不是MapFragment这是因为你必须实现getSupportFragmentManager() -
上述问题已解决,但现在当我从 MapFragment 按下时它崩溃(它应该带我到我来自的第一个片段) 04-19 21:54:58.581: E/AndroidRuntime(975 ): java.lang.NullPointerException 04-19 21:54:58.581: E/AndroidRuntime(975): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:651)
-
尝试将此 MapFragment 转换为 SupportMapFragment
-
我不确定,但您的异常可能是由嵌套片段引起的。您可能会使用
getChildFragmentManager()而不是getFragmentManager()方法。
标签: android android-fragments google-maps-android-api-2 android-nested-fragment