【已解决】Android中xml中TextView引用已定义好的样式时出错:android.view.InflateException: Binary XML file line #14: Error

【已解决】Android中xml中TextView引用已定义好的样式时出错:android.view.InflateException: Binary XML file line #14: Error inflating class

android中,在一个xml布局文件中,对于实现已经定义好的样式:

?
1
2
3
4
5
< style name = "NormalText" >
     < item name = "android:textSize" >14sp</ item >
     < item name = "android:textStyle" >normal</ item >
     < item name = "android:textColor" >@color/Gray1</ item >
</ style >

去引用:

?
1
2
3
4
5
6
7
8
9
< TextView
     android:id = "@+id/scanDeviceHint"
     android:layout_width = "230dp"
     android:layout_height = "30dp"
     android:layout_marginLeft = "10dp"
     android:layout_marginTop = "10dp"
     android:text = "@string/search_device_hint_text"
     android:textStyle = "@style/NormalText" >
</ TextView >

结果出错:

04-08 13:40:23.489: E/AndroidRuntime(17541): FATAL EXCEPTION: main

04-08 13:40:23.489: E/AndroidRuntime(17541): java.lang.RuntimeException: Unable to start activity ComponentInfo{yyy/xxx.ScanActivity}: android.view.InflateException: Binary XML file line #14: Error inflating class <unknown>

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.ActivityThread.access$700(ActivityThread.java:150)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.os.Handler.dispatchMessage(Handler.java:99)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.os.Looper.loop(Looper.java:176)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.ActivityThread.main(ActivityThread.java:5279)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at java.lang.reflect.Method.invokeNative(Native Method)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at java.lang.reflect.Method.invoke(Method.java:511)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at dalvik.system.NativeStart.main(Native Method)

04-08 13:40:23.489: E/AndroidRuntime(17541): Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class <unknown>

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.createView(LayoutInflater.java:619)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.inflate(LayoutInflater.java:495)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:342)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.Activity.setContentView(Activity.java:1928)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at xxx.ScanActivity.onCreate(ScanActivity.java:46)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.Activity.performCreate(Activity.java:5267)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)

04-08 13:40:23.489: E/AndroidRuntime(17541):     … 11 more

04-08 13:40:23.489: E/AndroidRuntime(17541): Caused by: java.lang.reflect.InvocationTargetException

04-08 13:40:23.489: E/AndroidRuntime(17541):     at java.lang.reflect.Constructor.constructNative(Native Method)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at java.lang.reflect.Constructor.newInstance(Constructor.java:417)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.view.LayoutInflater.createView(LayoutInflater.java:593)

04-08 13:40:23.489: E/AndroidRuntime(17541):     … 25 more

04-08 13:40:23.489: E/AndroidRuntime(17541): Caused by: java.lang.NumberFormatException: Invalid int: "@2131165204"

04-08 13:40:23.489: E/AndroidRuntime(17541):     at java.lang.Integer.invalidInt(Integer.java:138)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at java.lang.Integer.parse(Integer.java:375)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at java.lang.Integer.parseInt(Integer.java:366)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:123)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.content.res.TypedArray.getInt(TypedArray.java:255)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.widget.TextView.<init>(TextView.java:1171)

04-08 13:40:23.489: E/AndroidRuntime(17541):     at android.widget.TextView.<init>(TextView.java:814)

04-08 13:40:23.489: E/AndroidRuntime(17541):     … 28 more

 

如图:

android textview style reference error android.view.inflateexception binary xml file line infalating class unknown

【解决过程】

1.后来才注意到,其实错误信息中,已经指出来了对应的错误的位置了:

XML file line #14

就是此处上面贴出来的错误的部分。

2.后来去参考:

Styles and Themes | Android Developers

感觉应该是把:

?
1
android:textStyle="@style/NormalText"

改为:

?
1
style="@style/NormalText"

变为:

?
1
2
3
4
5
6
7
8
9
< TextView
     android:id = "@+id/scanDeviceHint"
     android:layout_width = "230dp"
     android:layout_height = "30dp"
     android:layout_marginLeft = "10dp"
     android:layout_marginTop = "10dp"
     android:text = "@string/search_device_hint_text"
     style = "@style/NormalText" >
</ TextView >

结果是:

的确可以了。

 

【总结】

对于Text等内容,去引用已经定义好的Style的话,是:

<TextView style="@style/xxx">

而不是:

<TextView android:style="@style/xxx">

其中,@所引用的xxx的style中, 会包含对应的android:style的相关定义的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值