您的位置:首页 > 移动开发 > Android开发

Android.SuperNotCalledException报错异常信息的解决方案

2016-06-05 13:34 1381 查看

总结前阵子同事遇到的问题Android.support.v4.app.SuperNotCalledException

1.分析

报错信息:

java.lang.RuntimeException: Unable to destroy activity {com.hy.gjh/com.hy.gjh.ui.activity.usercenter.UsercenterEditActivity}:
android.support.v4.app.SuperNotCalledException: Fragment EditMyCardFragment{5280b448 #0 id=0x7f0e0134
com.hy.gjh.ui.fragment.usercenter.editdata.EditMyCardFragment} did not call through to super.onDestroy()
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3497)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3515)
...
Caused by: android.support.v4.app.SuperNotCalledException: Fragment EditMyCardFragment{5280b448 #0 id=0x7f0e0134
com.hy.gjh.ui.fragment.usercenter.editdata.EditMyCardFragment} did not call through to super.onDestroy()
at android.support.v4.app.Fragment.performDestroy(Fragment.java:2204)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1196)
...


为什么会报SuperNotCalledException异常信息:

探讨:根据报错信息的提示:由于没有销毁fragment,导致activity没法销毁。扭头一看原来还真的是这样,直接贴代码
@Override
public void onDestroy() {
//......
}

在当前的fragment类的onDestroy方法里没有调用父类的onDestroy()方法,导致了异常的发生。正确的代码应该是:
@Override
public void onDestroy() {
super.onDestroy();
//......
}


正常运行 …

2.总结:在fargment的生命周期方法,比如onDestroy()方法里首先调用super.onDestroy(),之后再写我们自己实现逻辑的代码,引用一篇博客的一句话:”对于这种在框架上面的编程要时刻记住是系统来调用我们的程序,当然我们也调用系统的程序,但最终还是系统框架调用我们的程序。”

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: