Android 开发空指针及发现的异常

在搬砖的过程中,出现了问题,十有八九是配置出了错或者文件路径放错!!!

还有就是复制过来的布局文件,自定义组件的包名不对,这不会在编译时报错!!

空指针异常

在昨天的代码,报如下错误

   Caused by: java.lang.NullPointerException: 
   Attempt to invoke virtual method 'int com..video_manage.MyApplication.getScreenWidth()' on a null object reference

大致意思是没有对象实例,不能调用那个获取高度的方法。

然后我就纳闷了,我直接new 了一个对象,也没有实例。然后我就启动修改代码的活动,最后发现,离不开这个Application对象。这就很烦了。

最终,在前几分钟,我找到了原因。
Android 开发空指针及发现的异常_第1张图片
我的Myapplication继承自Application,这里忘了给Myapplication注册,导致整个应用都没有Myapplication这个实例对象。特此,记录一下。

默认注册的应该是Application ,因为我是继承了这个类,所以需要注册新的,MyApplication。

AndroidManifest.xml详解(转载):https://www.jianshu.com/p/3b5b89d4e154

下面的介绍是上面网址的,感兴趣的同学可以看看。

android:name
Application子类的全名。包括前面的路径。例如com.sample.teapot.TeapotApplication。当应用启动时,这个类的实例被第一个创建。这个属性是可选的,大多数APP都不需要这个属性。在没有这个属性的时候,Android会启动一个Application类的实例。

今天又空指针了,原来代码:

AlertDialog.Builder dialog_builder_button = new AlertDialog.Builder(StandConfigActivity.this);
dialog_builder_button.setView(R.layout.win_button_config);
final AlertDialog dialog_button = dialog_builder_button.create();  //创建对话框
dialog_builder_button.show();

Button name_ok = dialog_name.findViewById(R.id.name_ok);
name_ok.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              dialog_name.dismiss();
          }
      });

然后点击按钮就报空指针,说空对象获取不到实例。

通过调试,发现是调用AlertDialog的show方法,而不是AlertDialog.Builder 的show方法。所以修改后,就能通过AlertDialog获取自定义布局的组件了。

新的报错(大致意思是XML内容错了,找不到):
也没说在哪啊???人就懵了。。。

人总是要思考是吧,然后就发现这个是自定义的组件,所以肯定在布局文件中,然后就发现了,这个复制过来的布局文件,没有报错,但是这个自定义组件包名不对,这是第二次入坑了。。。

Caused by: android.view.InflateException: Binary XML file line #56: Error inflating class com.example.widget.WheelView
Caused by: java.lang.ClassNotFoundException: Didn't find class

系统配置异常

在整合项目功能的时候,在build的时候报了个错,先说我自己的解决办法,使用clean project ,在Android studio 的 Build 里面有。我找了网上很多办法,都没有解决,然后就试了下清理项目,我觉得这个有可能是配置重复或者冲突,在将其他项目模块添加进来的时候,配置冲突。

我不能保证在其他的地方也能用,我自己这里是这么解决的!!!

AS很多异常,我比较喜欢build 几次,然后clean 几次,没效果再找原因。毕竟有时候,很久没打开AS,也会报错。

Error:Execution failed for task ':app:transformJackWithJackForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.core.JackToolchain$ToolchainException: Jack configuration exception.
  Property 'jack.library.output.dir' (in Options): 'case insensitive wrapper' VFS in directory 'D:\Android\Applications\Teach\app\build\intermediates\incremental\transformJackWithJackForDebug' has a bad format: 
file 'D:\Android\Applications\Teach\app\build\intermediates\incremental\transformJackWithJackForDebug\index' does not exist (required because 'jack.library' (defined in Options) is set to true and 'jack.library.output.container' (defined in Options) is set to 'dir')

还是那句话,空指针找源头。

你可能感兴趣的:(故障与异常系列,Android,Application空指针)