android deprecated

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?


  1. 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

  2. ¿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 la View . 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 clase View . Por lo tanto, ya no es necesario pasar un Context 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.

Fuente para TextViewCompat

Fuente para TextView (API23)