public void setTextAppearance (Context context, int resId) Ajouté au niveau 1 de l'API
Cette méthode est obsolète au niveau de l'API 23. Utilisez plutôt setTextAppearance (int).
Ma question: Pourquoi est-il déconseillé? Pourquoi n'a-t-il plus besoin de Context
? Et surtout, comment utiliser setTextAppearance(int resId)
pour les anciennes versions?
Vous pouvez utiliser TextViewCompat
à partir de la bibliothèque support/androidX:
import Android.support.v4.widget.TextViewCompat // for support-library
import androidx.core.widget.TextViewCompat // for androidX library
// ...
TextViewCompat.setTextAppearance(view, resId)
En interne, il obtient le contexte de la vue (view.getContext()
) sur l'API <23.
comment utiliser setTextAppearance(int resId)
pour les anciennes versions?
Utilisez-le comme ceci:
if (Build.VERSION.SDK_INT < 23) {
super.setTextAppearance(context, resId);
} else {
super.setTextAppearance(resId);
}
Pour plus d'informations: https://stackoverflow.com/a/33393762/4747587
Pourquoi est-il devenu obsolète? Pourquoi n'a-t-il plus besoin de Context?
La raison pour laquelle il est obsolète est qu'il n'est pas nécessaire de passer un context
. Il utilise le contexte par défaut fourni par View
. Regardez le code source ci-dessous. Cela devrait l'expliquer.
public void setTextAppearance(@StyleRes int resId) {
setTextAppearance(mContext, resId);
}
Le mContext
ici est défini dans la classe View
. Vous n'avez donc plus besoin de passer un Context
à cette méthode. TextView
utilisera le contexte qui lui est fourni lors de sa création. Cela a plus de sens.
[~ # ~] mise à jour [~ # ~]
Cette fonctionnalité est ajoutée dans le cadre de la bibliothèque de support. Donc au lieu de TextView
, utilisez TextViewCompat
[documentation] . Il y a aussi d'autres classes introduites avec cela, comme ImageViewCompat
.