La subclase de EditText no se comporta como EditText

He escrito una subclase de EditText . Aquí está esa subclase:

 package com.package.foo; import android.content.Context; import android.graphics.Typeface; import android.util.AttributeSet; import android.widget.EditText; public class FuturaEditText extends EditText{ public FuturaEditText(Context context) { this(context, null, 0); } public FuturaEditText(Context context, AttributeSet attrs) { this(context, attrs, 0); } public FuturaEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); if(!isInEditMode()) { setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/futura.ttf")); } } } 

sin embargo, no se comporta como un EditText , sino un TextView . En particular, el teclado no sube en el enfoque y no tiene formato EditText . ¿Por qué?

Para mayor completitud – de la fuente:

 public EditText(Context context, AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.editTextStyle); } 

Por lo tanto, si el constructor se llama sin estilo predeterminado, por defecto se editTextStyle

Esta implementación, con cada constructor llamando al super constructor coincidente:

 package com.package.foo; import android.content.Context; import android.graphics.Typeface; import android.util.AttributeSet; import android.widget.EditText; public class FuturaEditText extends EditText{ public FuturaEditText(Context context) { super(context); if(!isInEditMode()) { setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/futura.ttf")); } } public FuturaEditText(Context context, AttributeSet attrs) { super(context, attrs); if(!isInEditMode()) { setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/futura.ttf")); } } public FuturaEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); if(!isInEditMode()) { setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/futura.ttf")); } } } 

trabajos. Sólo puedo asumir que EditText(context, attrs, 0) no es lo mismo que EditText(context, attrs) .

No debe invocar al constructor súper completando los argumentos que faltan, de lo contrario no hay manera para que un cliente invoque a un constructor con menos de 3 argumentos (es decir, super.(Context context, AttributeSet attrs) ).

La segunda versión es la correcta.

  • Obtener una cadena de texto de EditText?
  • La clave de edittext de Android regresa al siguiente texto
  • Custom EditText no funciona después de establecer su tipo de entrada a través de setInputType ()
  • ¿Cómo puedo activar una acción cuando el usuario ha ingresado?
  • Centrarse en segundo edittext sólo si primero es no-vacío android
  • Administrador de métodos de entrada de Android para obtener el teclado numérico sólo
  • EditText OnKeyListener no funciona
  • () .TotString () a veces devuelve ""
  • Permitir sólo charcters seleccionados basados ​​en regex en un EditText
  • EditText no pierde el foco
  • Obtener el valor del atributo Hint de AttributeSet
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.