¿Por qué necesitamos un cuarto constructor para Lollipop?
Comencé un proyecto dirigido a Android Lollipop (21), y creé una vista personalizada. Cuando generé constructores para la vista, conseguí un nuevo 4to constructor que toma más params que los otros.
public class FooView extends FrameLayout { public FooView(Context context) { super(context); } public FooView(Context context, AttributeSet attrs) { super(context, attrs); } public FooView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } // This 4th constructor @TargetApi(Build.VERSION_CODES.LOLLIPOP) public FooView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } }
Mi pregunta es, ¿por qué lo necesitamos? ¿Qué sucedería si eliminara este constructor y ejecutar la aplicación en Lollipop?
- Excepción de puntero nulo con vista personalizada en el diseño xml
- Eliminar la sombra de android.widget.Toolbar
- OnClickListener en Android Studio
- (MapView y 1700 elementos de superposición) .equals ("Slow")
- Cómo configurar Proguard para mantener los métodos estáticos con diferentes tiempos de retorno
- Ninguna faceta de Android encontrada en el módulo
- DrawerLayout o TabLayout es nulo después de reanudar la actividad de fondo?
- No se puede resolver nada.
- IllegalStateException en Android Support al ejecutar pruebas de unidad
- Vista de accesorios (similar a inputAccessoryView para iOS) para el teclado Android
- Java MappedByteBuffer.get () sorprendentemente lento
- Error al cambiar la configuración regional de db '/data/data/my.easymedi.controller/databases/EasyMediInfo.db' a 'en_US'
- Eclipse no construye un proyecto Android dirigido a 5.0 Lollipop
Información del documento oficial
Public View (Contexto contextual, AtributoSet attrs, int defStyleAttr, int defStyleRes)
Añadido en API nivel 21
Realice la inflación desde XML y aplique un estilo de base específico de clase desde un atributo de tema o un recurso de estilo. Este constructor de Vista permite que las subclases utilicen su propio estilo base cuando se infla.
Al determinar el valor final de un atributo particular, hay cuatro entradas que entran en juego:
- Cualesquiera valores de atributo en el AttributeSet dado.
- El recurso de estilo especificado en AttributeSet (denominado "style").
- El estilo predeterminado especificado por defStyleAttr.
- El estilo predeterminado especificado por defStyleRes.
- Los valores base en este tema.
Cada uno de estos insumos se considera en orden, con la primera lista tomando prioridad sobre los siguientes. En otras palabras, si en el AttributeSet que ha proporcionado, el texto del botón siempre será negro, independientemente de lo que se especifica en cualquiera de los estilos.
Parámetros
- Contexto El Contexto en el que se ejecuta la vista, a través del cual puede acceder al tema actual, recursos, etc.
- Attrs Los atributos de la etiqueta XML que infla la vista.
- DefStyleAttr Un atributo en el tema actual que contiene una referencia a un recurso de estilo que suministra valores predeterminados para la vista. Puede ser 0 para no buscar valores por defecto.
- DefStyleRes Identificador de recurso de un recurso de estilo que suministra valores predeterminados para la vista, utilizado sólo si defStyleAttr es 0 o no se encuentra en el tema. Puede ser 0 para no buscar valores por defecto.