
我第一次使用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地图时,应用程序崩溃了所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)