为了账号安全,请及时绑定邮箱和手机立即绑定

在膨胀布局时尝试NPE(尝试在空对象引用上调用虚方法'boolean java.lang

在膨胀布局时尝试NPE(尝试在空对象引用上调用虚方法'boolean java.lang

慕莱坞森 2019-08-05 15:49:03
在膨胀布局时尝试NPE(尝试在空对象引用上调用虚方法'boolean java.lang.String.equals(java.lang.Object)'java.lang.NullPointerException当我尝试ScrollView在活动中使用时,我会不断获得。奇怪的是,我Scrollview在其他活动中使用了完全相同的设置。突然之间,我遇到了错误。我试过清理项目并重建。而且我已经尝试了这个好老的重启程序。我今天学到了很多关于Null Pointer Exceptions的知识,但是我还没弄清楚为什么我一直在学习渲染问题。所以,这些都不是我写的代码。所以我潜入堆栈跟踪并发现:  java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)         at android.app.ActivityThread.access$800(ActivityThread.java:151)         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)         at android.os.Handler.dispatchMessage(Handler.java:102)         at android.os.Looper.loop(Looper.java:135)         at android.app.ActivityThread.main(ActivityThread.java:5254)         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:903)         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)         Caused by: 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:715)               at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)               at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)               at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)               at android.view.LayoutInflater.inflate(LayoutInflater.java:504)               at android.view.LayoutInflater.inflate(LayoutInflater.java:414)有什么建议?非常感谢你!
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

更改<view<View,因为view是不是空的观点。这是通过classattr 定义的自定义视图,如下所示:

<view
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    class="com.your.package.YourCustomView" />

而你得到了

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

因为LayoutInflater试图解析classattr:

LayoutInflater 源代码

//...View createViewFromTag(View parent, String name, Context context, AttributeSet attrs,
        boolean ignoreThemeAttr) {
    if (name.equals("view")) { // line 724
        name = attrs.getAttributeValue(null, "class"); // line 725
    }

    // Apply a theme wrapper, if allowed and one is specified.
    if (!ignoreThemeAttr) {
        final TypedArray ta = context.obtainStyledAttributes(attrs, ATTRS_THEME);
        final int themeResId = ta.getResourceId(0, 0);
        if (themeResId != 0) {
            context = new ContextThemeWrapper(context, themeResId);
        }
        ta.recycle();
    }

    if (name.equals(TAG_1995)) { // line 738
        // Let's party like it's 1995!
        return new BlinkLayout(context, attrs);
    }//...
  • 上线724就检查标签的view,并得到true

  • 在第725行,它尝试通过classattr 获取课程并获取null

  • 在第738行,它尝试检查blink标记并崩溃

此外,有一个奇怪的事情,Android开发人员添加了复活节彩蛋,你可以试试:

<view
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    class="blink">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Some text" /></view>


查看完整回答
反对 回复 2019-08-05
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

2天后我解决了这个问题使用View而不是view

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#faf4f4"></View>


查看完整回答
反对 回复 2019-08-05
  • 2 回答
  • 0 关注
  • 741 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信