public void setTextAppearance(コンテキストコンテキスト、int resId)APIレベル1で追加
このメソッドはAPIレベル23で廃止されました。代わりにsetTextAppearance(int)を使用してください。
私の質問:なぜ廃止されたのですか? Context
がもう必要ないのはなぜですか?そして最も重要なのは、古いバージョンでsetTextAppearance(int resId)
を使用する方法ですか?
Support/androidXライブラリのTextViewCompat
を使用できます。
_ import Android.support.v4.widget.TextViewCompat // for support-library
import androidx.core.widget.TextViewCompat // for androidX library
// ...
TextViewCompat.setTextAppearance(view, resId)
_
内部的には、API <23のビュー(view.getContext()
)からコンテキストを取得します。
古いバージョンでsetTextAppearance(int resId)
を使用する方法は?
次のように使用します。
if (Build.VERSION.SDK_INT < 23) {
super.setTextAppearance(context, resId);
} else {
super.setTextAppearance(resId);
}
なぜ非推奨になったのですか? Contextがもう必要ないのはなぜですか?
廃止される理由は、context
を渡す必要がないからです。 View
によって提供されるデフォルトのコンテキストを使用します。以下のソースコードを見てください。それで説明できるはずです。
public void setTextAppearance(@StyleRes int resId) {
setTextAppearance(mContext, resId);
}
ここのmContext
はView
クラスで定義されています。したがって、このメソッドにContext
を渡す必要はもうありません。 TextView
は、作成中に提供されたコンテキストを使用します。それは理にかなっています。
[〜#〜] update [〜#〜]
この機能は、サポートライブラリの一部として追加されます。したがって、TextView
の代わりに、TextViewCompat
[documentation] を使用します。 ImageViewCompat
のように、これと共に導入された他のクラスもあります。