AS真机调试出现闪退
这类情况反正肯定是代码有问题,即使IDE上没有标红
可能是缺少view之类的引用,也可能是定义有错
解决方法可以在代码中加入一些日志log.d的输出,再debug看可以走到哪一步
一、真实案例
debug出报错“Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object ...”
这说明List的引用有问题,虽然定义了但并没有初始化(即下文中的原因五)
原先的错误定义方式: private List<tx> txList;
修改后正确定义方式:List<tx> txList = new ArrayList<>();</tx></tx>
二、真机调试闪退原因汇总
原因一:xxx的错误,若为R.layout.main 那么应该是main.xml文件中的标签 使用错误,最常见的而且编译器不会提示的错误就是 android:name 和 android:id两者混淆,仔细检查main.xml的标签是否全部正确
原因二:在setContentView(view)方法之后使用了requestWindowFeature()方法,并且在此错误下面会提示requestFeature必须在setContentView之前使用,只需要把requestWindowFeature()方法放在setContentView(view)方法之前就可以解决
原因三:在onCreate()方法之外,并且不属于任何一个方法体内直接给某控件findById(R.id.xx)所导致,需要在某方法内并且在setContentView(view)方法之前进行findById(R.id.xx)即可解决
原因四:在setContentView(view)之前没有对view进行实例化,只进行了声明而直接 setContentView(view) 所导致,仔细检查view是否setContentView(view)调用之前并在方法内进行实例化即可解决
原因五:因为发生了空指针的错误异常,所以你应该检查一下比如 Spinner 或者 list 这类的东西里面是否有值存在/是否初始化
原因六:引用drawable中的图片或xml但将图片或文件放在了drawable(v24)中
原因七:引用的图片超出内存
三、参考文献:
Java中初始化List的五种方式
https://www.jianshu.com/p/4c8c0e78061d