android - setTextAppearance obsoleto en el nivel API 23
deprecated (2)
public void setTextAppearance (Context context, int resId) Agregado en API nivel 1
Este método quedó en desuso en el nivel de API 23. Use setTextAppearance (int) en su lugar.
Mi pregunta : ¿Por qué ha sido desaprobado? ¿Por qué ya no necesita el Context
? Y lo más importante, ¿cómo usar setTextAppearance(int resId)
para versiones anteriores?
cómo usar
setTextAppearance(int resId)
para versiones anteriores?Úselo así:
if (Build.VERSION.SDK_INT < 23) { super.setTextAppearance(context, resId); } else { super.setTextAppearance(resId); }
Para más información: https://.com/a/33393762/4747587
¿Por qué ha sido desaprobado? ¿Por qué ya no necesita el contexto?
La razón por la que está en desuso es que no hay necesidad de pasar un
context
. Utiliza el contexto predeterminado proporcionado por laView
. Mira el código fuente a continuación. Eso debería explicarlo.public void setTextAppearance(@StyleRes int resId) { setTextAppearance(mContext, resId); }
El
mContext
aquí se define en la claseView
. Por lo tanto, ya no es necesario pasar unContext
a este método.TextView
utilizará el contexto proporcionado durante su creación. Eso tiene más sentido.
ACTUALIZAR
Esta funcionalidad se agrega como parte de la Biblioteca de soporte. Entonces, en lugar de TextView
, usa TextViewCompat
[documentation] . También hay otras clases introducidas junto con esto, como ImageViewCompat
.
Puede usar TextViewCompat
desde la biblioteca de soporte:
import android.support.v4.widget.TextViewCompat
// ...
TextViewCompat.setTextAppearance(view, resId)
Internamente obtiene el contexto de la vista ( view.getContext()
) en API <23.