android– 在Fragment中使用Google地图时,应用程序崩溃了

android– 在Fragment中使用Google地图时,应用程序崩溃了,第1张

概述我第一次使用Fragments作为我的应用程序.我已经在其中一个片段中实现了GoogleMap,每当我选择带有地图的标签时,它会成功加载,但是一旦我进入其他活动的主菜单,它就会崩溃,我不知道为什么.这是我的崩溃日志:–03-2814:14:23.175:E/AndroidRuntime(18215):FATALEXCEPTION:m

我第一次使用Fragments作为我的应用程序.我已经在其中一个片段中实现了Google Map,每当我选择带有地图的标签时,它会成功加载,但是一旦我进入其他活动的主菜单,它就会崩溃,我不知道为什么.

这是我的崩溃日志: –

03-28 14:14:23.175: E/AndroIDRuntime(18215): FATAL EXCEPTION: main03-28 14:14:23.175: E/AndroIDRuntime(18215): @R_419_4126@.RuntimeException: Unable to destroy activity {MyFragmentActivity}: @R_419_4126@.IllegalStateException: Can not perform this action after onSaveInstanceState03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.app.ActivityThread.performDestroyActivity(ActivityThread.java:3444)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3462)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.app.ActivityThread.access00(ActivityThread.java:149)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1358)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.os.Handler.dispatchMessage(Handler.java:99)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.os.Looper.loop(Looper.java:153)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.app.ActivityThread.main(ActivityThread.java:5000)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at @R_419_4126@.reflect.Method.invokeNative(Native Method)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at @R_419_4126@.reflect.Method.invoke(Method.java:511)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:584)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at dalvik.system.NativeStart.main(Native Method)03-28 14:14:23.175: E/AndroIDRuntime(18215): Caused by: @R_419_4126@.IllegalStateException: Can not perform this action after onSaveInstanceState03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1343)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1361)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at com.fragments.FindMyCar.onDestroyVIEw(FindMyCar.java:297)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.Fragment.performDestroyVIEw(Fragment.java:1705)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:996)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1104)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1086)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:1921)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:335)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.app.Activity.performDestroy(Activity.java:5184)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1111)03-28 14:14:23.175: E/AndroIDRuntime(18215):    at androID.app.ActivityThread.performDestroyActivity(ActivityThread.java:3431)03-28 14:14:23.175: E/AndroIDRuntime(18215):    ... 11 more

在我的片段中,我实现了这样: –

@OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,            Bundle savedInstanceState) {        VIEw vIEw = inflater.inflate(R.layout.findmycar, null);        initVIEws(vIEw);        // Getting Google Play availability status        int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity());        if(status!=ConnectionResult.SUCCESS){ // Google Play Services are not available            int requestCode = 10;            Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, getActivity(), requestCode);            dialog.show();        }else { // Google Play Services are available            fm = (SupportMapFragment) getFragmentManager().findFragmentByID(R.ID.map);            map = fm.getMap();            if(map == null){                //Toast.makeText(getActivity(), "null", 0).show();            }            else{                map.setMyLocationEnabled(true);                // checking for the best provIDer and connectivity                // Getting LocationManager object from System Service LOCATION_SERVICE                locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);                if (netInfo !=null && netInfo.isConnected()) {                    if(isGpsEnable()){                        provIDer=LocationManager.GPS_PROVIDER;                        mLocation = locationManager.getLastKNownLocation(LocationManager.GPS_PROVIDER);                        if(mLocation==null){                            //onLocationChanged(location);                            provIDer=LocationManager.NETWORK_PROVIDER;                            mLocation = locationManager.getLastKNownLocation(LocationManager.NETWORK_PROVIDER);                            Log.d("Location","Location " + mLocation + " " + provIDer);                            if(mLocation!=null){                                onLocationChanged(mLocation);                            }                            else{                                Toast.makeText(getActivity(), "Unable to fetch your current location at the moment. Please try again later.", Toast.LENGTH_LONG).show();                            }                        }else {                            onLocationChanged(mLocation);                        }                    }                    else{                        showGpsAlert();                    }                }                else{                    Toast.makeText(getActivity(), "No internet connection", Toast.LENGTH_LONG).show();                }            }        }@OverrIDe    public voID onDestroyVIEw() {        super.onDestroyVIEw();        Fragment fragment = (getFragmentManager().findFragmentByID(R.ID.map));          if(fragment!=null){            Toast.makeText(getActivity(), "inif", 0).show();            FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();            ft.remove(fragment);            ft.commit();        }        else{        }    }    @OverrIDe    public voID onDestroy() {        super.onDestroy();    }    @OverrIDe    public voID onResume() {        super.onResume();        }    }

它完全运行,同时在onDestroyVIEw()方法中销毁引用但在该应用程序崩溃后,不知道该怎么做.

任何帮助都会很明显.
提前致谢.

解决方法:

试试这个,让我知道将以下代码放入onDestroyVIEw()

try{          SupportMapFragment fragment = ((SupportMapFragment) getFragmentManager().findFragmentByID(R.ID.map));          FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();          ft.remove(fragment);          ft.commit();        }catch(Exception e){        }
总结

以上是内存溢出为你收集整理的android – 在Fragment中使用Google地图时,应用程序崩溃了全部内容,希望文章能够帮你解决android – 在Fragment中使用Google地图时,应用程序崩溃了所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1110548.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存