Android inflate()引发NullPointerException

使用LayoutInflaterinflate()方法渲染View

View view = LayoutInflater.from(mContext).inflate(R.layout.layout_dialog, 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 ch.appblog.test.ui.activity.MainActivity$3.onCreate(MainActivity.java:86)
    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"
    />

原因:<view>标签的v是小写的,应该是<View>,资源文件编译未通过,不过viewView真的比较容易搞错,而且Android Studio也不会提示错误

所以编译进程卡在这里,布局资源控件未识别,inflate()引用了一个空的布局文件id

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/11/android-inflate-threw-nullpointerexception/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Android inflate()引发NullPointerException
使用LayoutInflater的inflate()方法渲染View View view = LayoutInflater.from(mContext).inflate(R.layout.layout_dialog, null); 报了一个看似毫无关联的空……
<<上一篇
下一篇>>
文章目录
关闭
目 录