Question: > 
> **public void setTextAppearance (Context context, int resId)
>  Added in API level 1**
>   
> 
>  This method was deprecated in API level 23.
>  Use setTextAppearance(int) instead. 
> 
> 
> 

**My Question**: Why it's been deprecated? Why it doesn't need `Context` anymore? And most importantly, how to use `setTextAppearance(int resId)` for older versions?

Answer: 
1. how to use `setTextAppearance(int resId)` for older versions?

Use it like this:

```
if (Build.VERSION.SDK_INT < 23) {
    super.setTextAppearance(context, resId);
} else {
    super.setTextAppearance(resId);
}

```

For more info: <https://stackoverflow.com/a/33393762/4747587>
2. Why it's been deprecated? Why it doesn't need Context anymore?

The Reason why it is deprecated is there is no need to pass a `context`. It uses the default context provided by the `View`. Look at the source code below. That should explain it.

```
public void setTextAppearance(@StyleRes int resId) {
     setTextAppearance(mContext, resId);
}

```

The `mContext` here is defined in the `View` class. So you need not pass a `Context` to this method anymore. The `TextView` will use the context provided to it during it's creation. That makes more sense.

**UPDATE**

This functionality is added as part of the Support Library. So instead of `TextView`, use `TextViewCompat` [[documentation]](https://developer.android.com/reference/android/support/v4/widget/TextViewCompat.html). There are also other classes introduced along with this, like `ImageViewCompat`.
The above answer is correct - here's another way too. In Kotlin I wrote an extension which makes life easier if you do support `SDK 23` and below as well as above.

```
   fun TextView.setAppearance(context: Context, res: Int) {
        if (Build.VERSION.SDK_INT < 23) {
            setTextAppearance(context, res)
        } else {
            setTextAppearance(res)
        }
    }

```