com.luminal.view E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.luminal.view, PID: 4456
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.luminal.view/com.luminal.view.MainActivity}: android.view.InflateException: Binary XML file line #19: Binary XML file line #19: Error inflating class com.luminal.view.CustomView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2755)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2816)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1555)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6385)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
Caused by: android.view.InflateException: Binary XML file line #19: Binary XML file line #19: Error inflating class com.luminal.view.CustomView
Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class com.luminal.view.CustomView
Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet]
解决方式:
若我们只通过XML布局的方式往Activity中添加我们自定义的View时,必须重写双参的构造函数。但为了防止出错,建议把单参的、双参的都重写了。
// public CustomView(Context context) {
// super(context);
// }
//必须要实现的构造函数
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
// public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
// super(context, attrs, defStyleAttr);
// }
//
// @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
// public CustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
// super(context, attrs, defStyleAttr, defStyleRes);
// }