I'm receiving this error when I run my application.
The error:
Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getConstructor(Class.java:446)
at android.view.LayoutInflater.createView(LayoutInflater.java:574)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:366)
at android.app.Activity.setContentView(Activity.java:2031)
at com.example.syafiq.facialrecognition.Recognize_Face.onCreate(Recognize_Face.java:152)
The Recognize_Face.java:152) was pointed here:
(line 148) protected void onCreate(Bundle savedInstanceState) {
(line 149) Log.i(TAG, "called onCreate");
(line 150) 1super.onCreate(savedInstanceState);
(line 151) getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
(line 152) setContentView(R.layout.activity_recognize__face);
my activity_recognize_face.xml :
<?xml version="1.0" encoding="utf-8"?><RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#e7bc3a">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.88"
android:orientation="vertical">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.88">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/buttonCat"
android:layout_width="65dp"
android:layout_height="68dp"
android:text="@string/SViewAll"
android:background="#4892f4"/>
<com.example.syafiq.facialrecognition.Tutorial3View
android:id="@+id/tutorial3_activity_java_surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.88" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="120dp"
android:layout_height="140dp"
android:src="@drawable/lightbulb" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent">
<TextView
android:id="@+id/textViewState"
android:layout_width="190dp"
android:layout_height="wrap_content"
android:text="@string/SIdle"
android:textAppearance="?android:attr/textAppearanceMedium" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_green" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_yellow" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_red" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.07"
android:checked="false"
android:text="@string/STrain"
android:textOff="@string/STrain"
android:textOn="@string/SStopTrain"
android:background="#4892f4" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.71"
android:text="@string/SFaceName"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.76"
android:maxLines="1"
android:singleLine="true">
<requestFocus />
</EditText>
<ToggleButton
android:id="@+id/buttonBuscar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/SSearch"
android:textOff="@string/SSearch"
android:textOn="@string/SStopSearch"
android:background="#4892f4" />
<ToggleButton
android:id="@+id/toggleButtonGrabar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Grabar"
android:textOff="Rec"
android:textOn="Stop"
android:background="#4892f4" />
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.73"
android:src="@drawable/ic_stat_camera" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Can anyone help me :/ I'm really appreciate your time and help for consideration for solving my error. Thanks in Advance!
You have a custom view referenced in your layout XML, and the custom view doesn't have the required public
constructor that takes in Context,AttributeSet
arguments.
If you arrived at this post but are using Kotlin, annotate your constructor with @JvmOverloads
.
Doc: Kotlin - Overloads Generation
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : LinearLayout(context, attrs, defStyle)
An improvement to @Shazbot's answer for Kotlin. Add these constructors:
class CustomView : View {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle)
}
When you need init
:
class CustomView : View {
constructor(context: Context) : super(context) {
init(null, 0)
}
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
init(attrs, 0)
}
constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) {
init(attrs, defStyle)
}
private fun init(attrs: AttributeSet?, defStyle: Int) {
// do something
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With