我创建了一个自定义TextView,我唯一做的就是在布局xml中放置一个“实例”.
这会导致应用程序崩溃并出现“Inflate Exception”:
这会导致应用程序崩溃并出现“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_width="fill_parent" android:layout_height="fill_parent"> <com.example.TestApp.MyTextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World,MyActivity" /> </LinearLayout>
日志是:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.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.