Android:自定义 TextView 膨胀异常

Posted

技术标签:

【中文标题】Android:自定义 TextView 膨胀异常【英文标题】:Android: Custom TextView Inflate Exception 【发布时间】:2013-04-29 06:07:43 【问题描述】:

我创建了一个自定义 TextView,我唯一做的就是在布局 xml 中放置了一个“实例”。 这会导致应用程序因“Inflate Exception”而崩溃:

这是完整的自定义类(实际上其中还没有任何“自定义”...):

 package com.example.TestApp;
...
public  class MyTextView extends TextView 

public MyTextView (Context context) 
    super(context);


@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);        


@Override
public void onDraw(Canvas canvas) 

    super.onDraw(canvas);


完整的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_
          android:layout_>

<com.example.TestApp.MyTextView
    android:layout_
    android:layout_
    android:text="Hello World, MyActivity"
    />
</LinearLayout>

日志是:

java.lang.RuntimeException: Unable to start activity 
ComponentInfocom.example.TestApp/com.example.TestApp.MyActivity: 
android.view.InflateException: Binary XML file line #8: Error inflating class 
com.example.TestApp.MyTextView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3691)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
    at dalvik.system.NativeStart.main(Native Method)

我已经阅读了很多关于这些膨胀异常的帖子,但这次真的是最简单的情况。 xml (com.example.TestApp.MyTextView) 中使用的类路径似乎是正确的 - Intellj IDEA 甚至建议它......

顺便说一句:最小目标 sdk 版本设置为 10。

【问题讨论】:

【参考方案1】:

像这样添加构造函数

public MyTextView(Context context, AttributeSet attrs) 
    super(context, attrs);

希望对你有帮助

【讨论】:

【参考方案2】:

添加构造函数

public MyTextView(Context context, AttributeSet attrs)

【讨论】:

以上是关于Android:自定义 TextView 膨胀异常的主要内容,如果未能解决你的问题,请参考以下文章

具有自定义样式的 TextView 导致奇怪的膨胀异常

Android 自定义小部件膨胀异常

Android:自定义视图上的膨胀异常

从 XML 膨胀自定义视图会创建 Illegalstateexception(Android, Java)

在Fabric中膨胀类TextView时出错

在首选项设置中膨胀布局