gpt4 book ai didi

android - fragment 内的 MapFragment,应用程序在重新打开 fragment 时崩溃

转载 作者:行者123 更新时间:2023-11-29 21:10:10 25 4
gpt4 key购买 nike

我在另一个 fragment 中有一个 mapfragment

<?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 中初始化 map

@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;
}

它工作正常但是当我按下后退按钮并重新打开这个 fragment 时它崩溃了

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 的 fragment 时给了我空指针,这可能是因为我用上面的代码删除了它,但现在的解决方案是什么?

最佳答案

请确保在为 map fragment 创建 View 或销毁时正确检查了 map 膨胀是否为空的条件。

把这个放在 onDestroy() 方法上

SupportMapFragment mapFragment = ((SupportMapFragment) 
getActivity().getSupportFragmentManager().findFragmentById(R.id.map_location_sharing));

if(mapFragment != null) {
FragmentManager fM = getFragmentManager();
fM.beginTransaction().remove(mapFragment).commit();

关于android - fragment 内的 MapFragment,应用程序在重新打开 fragment 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23172462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com