So I'm trying to get a grasp of using custom controls in Android. But my app crashes on trying to create the activity. Here's the code:
package com.myApp;
import android.content.Context;
import android.widget.EditText;
import android.view.View;
import android.view.View.OnClickListener;
public class MyEditText extends EditText implements OnClickListener {
public MyEditText(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public void FlashBorder()
{
//do some custom action
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText txt = (EditText) v;
txt.selectAll();
}
}
Here's the layout xml:
<com.myApp.MyEditText
android:id="@+id/edtTaskName"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
You will need to implement these constructors:
public class TestEditText extends EditText {
public TestEditText(Context context) {
super(context);
}
public TestEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TestEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public TestEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
for example try to do the following :
public TestEditText(Context context, AttributeSet attrs) {
super(context, attrs);
Log.i("attribute name at index 0", attrs.getAttributeName(0));
}
you will get the following in your logcat :
attribute name at index 0 = id
so to deliver these XML attributes to the Super class (EditText) you have to override these constructors.
Hope that Helps.
You have to add this constructor for creating any custom View.
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
.....
}
instead of
public MyEditText(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
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