之前碰到一个特别辣眼睛的问题,爬了老久才从坑里爬出来,今天特此记录一下,长长记性。
footView = LayoutInflater.from(mContext).inflate(R.layout.list_account_footer, null);
dialogView = LayoutInflater.from(mContext).inflate(R.layout.dialog_add_account, null);
情况是以上的两行孪生代码,咋一看,没毛病吧,但是第一行通过了,第二行报错
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:810)
at android.view.LayoutInflater.inflate(LayoutInflater.java:508)
at android.view.LayoutInflater.inflate(LayoutInflater.java:418)
at com.android.internal.app.AlertController.setupView(AlertController.java:482)
at com.android.internal.app.AlertController.installContent(AlertController.java:239)
at android.app.AlertDialog.onCreate(AlertDialog.java:356)
at android.app.Dialog.dispatchOnCreate(Dialog.java:373)
at android.app.Dialog.show(Dialog.java:274)
at com.beok.joylife.app.html5.activity.ChangeAccountActivity$3.onClick(ChangeAccountActivity.java:96)
at android.view.View.performClick(View.java:4811)
at android.view.View$PerformClick.run(View.java:20136)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5549)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
居然给我报了一个看似毫无关联的空指针异常让我好焦灼啊,为啥第一行就可以,到了老二就不行了呢?摸不着头脑太可怕了...
后来发现问题的所在简直...
<view style="@style/Line_View" android:layout_height="1dp"/>
以上是dialogView引用的布局文件R.layout.dialog_add_account.xml里的一个分割线,咋一看也是没毛病,但是,请注意,这里的view中的v是小写的...额...
所以编译进程卡在这里,布局资源文件果断未识别,inflate引用了一个空的布局文件id
好吧,居然是因为手残导致的资源文件编译未通过,不过view跟View真的比较容易搞错,而且AS也不过提示错误,所以还是自己强行记忆一下吧
网友评论
我不看你的文章,我都没意识到view小写!!!