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

总结前阵子同事遇到的问题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(),之后再写我们自己实现逻辑的代码,引用一篇博客的一句话:”对于这种在框架上面的编程要时刻记住是系统来调用我们的程序,当然我们也调用系统的程序,但最终还是系统框架调用我们的程序。”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android应用程序中常见的类错误包括: 1. ClassNotFoundException:这种错误通常是由于应用程序中缺少依赖库或类文件而引起的。解决方法是检查项目的依赖关系,并确保所有必需的库和类文件都存在。 2. NoClassDefFoundError:这种错误通常是由于应用程序编译时未能正确包含类文件而引起的。解决方法是检查应用程序的编译设置并确保所有必需的类文件都被正确包含。 3. NoSuchMethodError:这种错误通常是由于应用程序使用了不存在的方法而引起的。解决方法是检查代码中的方法调用,并确保调用的方法存在于目标类中。 4. VerifyError:这种错误通常是由于应用程序包含了无效的字节码而引起的。解决方法是检查应用程序的编译设置并确保所有字节码都是有效的。 如果以上方法都不能解决问题,你可以尝试清除应用程序的缓存或重新安装应用程序。 ### 回答2: Android中的.class错误通常是由于编译错误或引入错误的问题引起的。在Android开发中,.class文件是Java编译器生成的字节码文件,它包含了编译后的Java代码。 首先,当我们在编译Android项目时,如果代码中存在语法错误、缺失的引入或其他编译错误,编译器会生成.class错误。解决这种错误的最佳方法是仔细检查代码,查找并修复所有的语法错误和缺失的引入。 另外,有时候我们可能会在项目中引入错误的库文件或依赖项,这也会导致.class错误。在这种情况下,我们需要检查项目的依赖项和库文件,并确保它们与我们的项目兼容和正确。 此外,还可能发生一些其他错误,如.class文件不存在、.class文件被误删等。在这种情况下,我们需要确认我们的项目中是否包含所需的.class文件,并在必要时进行恢复或重新构建。 总之,当遇到Android .class错误时,我们应该先检查代码的语法错误和引入错误,然后检查项目的依赖项和库文件是否正确,最后确认所需的.class文件是否存在。如果仍然无法解决问题,我们可以尝试重新构建项目或咨询开发社区寻求帮助。 ### 回答3: 当我们在编写Android应用程序时,如果我们在项目中使用了某个类文件,却出现了Android .class报错的情况,有一些可能的原因需要我们检查和解决。 首先,我们需要检查是否已正确导入所需的类文件。在Android开发中,我们通常使用import语句来导入所需的类,以便在代码中使用。如果我们忘记导入类文件或者导入错误的类文件,就会出现Android .class报错。我们可以通过检查import语句的正确性来解决这个问题。 其次,我们需要确保所使用的类文件已经存在于项目的类路径中。Android开发使用的类文件通常是在SDK中提供的库文件或我们自己创建的类文件。如果我们忘记将这些类文件包含在项目的类路径中,或者包含了错误的类文件,就会导致Android .class报错。我们可以通过检查项目的类路径配置来解决这个问题。 另外,Android .class报错还可能是因为我们正在使用的类文件版本与当前Android环境不兼容。在Android开发中,不同的Android版本可能会提供不同的类文件或类文件版本。如果我们使用了错误的Android类文件版本,就会出现Android .class报错。我们可以通过检查项目的Android目标版本和所使用的类文件版本来解决这个问题。 最后,我们还需要检查是否有重复的类文件或类文件命名冲突。在Android开发中,我们常常会使用不同的库文件或自定义类文件来实现功能。如果这些类文件之间存在重复或命名冲突,就会导致Android .class报错。我们可以通过检查项目的类文件命名和确保没有重复的类文件来解决这个问题。 总结来说,Android .class报错可能是由于导入错误、类文件不在类路径中、版本不兼容或命名冲突等原因所导致。我们可以通过检查导入语句、类路径配置、Android版本、类文件命名和重复文件来解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值