android的兼容性问题之java.lang.UnsupportedOperationException

在前几天的开发中,遇到这么个非常奇葩的异常,有些手机可以运行,有些手机却直接就崩了,今天就把这异常整理下。
  • 首先还是贴上其异常信息

    E/AndroidRuntime: FATAL EXCEPTION: main
    android.view.InflateException: Binary XML file line #13: Error inflating class <unknown>
    at android.view.LayoutInflater.createView(LayoutInflater.java:613)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
    at android.view.LayoutInflater.parseInclude(LayoutInflater.java:830)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:736)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    at com.hy.taotao.utils.GlobalUtils.inflate(GlobalUtils.java:91)
    at com.hy.taotao.base.BaseFragment.onCreateView(BaseFragment.java:59)
    ...
    
    Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.constructNative(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
    at android.view.LayoutInflater.createView(LayoutInflater.java:587)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)?
    ...
    
    Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x1
    at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:468)
    at android.widget.TextView.<init>(TextView.java:944)
    at android.widget.TextView.<init>(TextView.java:605)
    at java.lang.reflect.Constructor.constructNative(Native Method)?
    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)?
    at android.view.LayoutInflater.createView(LayoutInflater.java:587)?
    ...
    
  • 上面我将主要的异常信息整理了出来,首先可以看看这一句,我们可以从上面得到的信息是 “xml文件13行导致的错误,原因是dimension文件找不到 type=0x1的元素”,后来同事在网上查了N多资料说的是values里面少了默认值,后面终于找到了缺少的默认值…

    • 1.首先看看报错之前的文件夹截图,可以看到在一部分values-v19的文件,在values上都看不到,而values-v19文件夹是Api19的设备使用该目录下的文件夹,当设备找不到对应的名为values-*的文件夹,就会去找默认的values文件夹下的文件,那么找不到的话,就发生了上面的异常了。

      这里写图片描述

    • 2.那么知道了问题所在,就得解决了

      1、将values-***全部备份后删掉。
      2、将备份后的values-***里的文件添加到默认的values文件夹。
      
    • 3.其实在上述2中这种方式一般是不推荐的,如果手机屏幕适配的话,当然不能只保留values这个默认的文件夹,但是切记在其他values-*文件夹的元素,在默认的values文件夹都必须得有。

    • 4.下面是简单处理之后的截图

      这里写图片描述

总结:

1.在做第三方集成等等情况的时候,切记:在其他values-*文件夹的元素,在默认的values文件夹都必须得有。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值