inflate()引发NullPointerException

之前碰到一个特别辣眼睛的问题,爬了老久才从坑里爬出来,今天特此记录一下,长长记性。

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也不过提示错误,所以还是自己强行记忆一下吧

推荐阅读更多精彩内容