Зачем нам нужен 4-й конструктор для Lollipop?

Я начал проект, ориентированный на Android Lollipop (21), и создал пользовательский вид. Когда я сгенерировал конструкторы для представления, я получил новый 4-й конструктор, который принимает больше параметров, чем другие.

public class FooView extends FrameLayout { public FooView(Context context) { super(context); } public FooView(Context context, AttributeSet attrs) { super(context, attrs); } public FooView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } // This 4th constructor @TargetApi(Build.VERSION_CODES.LOLLIPOP) public FooView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } } 

Мой вопрос: зачем нам это нужно? Что произойдет, если я удалю этот конструктор и запустил приложение на Lollipop?

Solutions Collecting From Web of "Зачем нам нужен 4-й конструктор для Lollipop?"

Информация из официального документа

Public View (контекст контекста, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Добавлено в API уровня 21

Выполните инфляцию из XML и примените базовый стиль для класса из атрибута темы или ресурса стиля. Этот конструктор View позволяет подклассам использовать свой собственный базовый стиль, когда он раздувается.

При определении конечного значения конкретного атрибута вступают в игру четыре входа:

  1. Любые значения атрибутов в заданном наборе атрибутов.
  2. Ресурс стиля, указанный в AttributeSet (называемый «стиль»).
  3. Стиль по умолчанию, определяемый defStyleAttr.
  4. Стиль по умолчанию, определенный defStyleRes.
  5. Базовые значения в этой теме.

Каждый из этих входов рассматривается в порядке, причем первый из них имеет приоритет над следующими. Другими словами, если в наборе атрибутов, который вы предоставили, текст кнопки всегда будет черным, независимо от того, что указано в любом из стилей.

параметры

  • Context Контекст, в котором работает представление, через которое он может получить доступ к текущей теме, ресурсам и т. Д.
  • Attrs Атрибуты тега XML, которые раздувают представление.
  • DefStyleAttr Атрибут в текущей теме, который содержит ссылку на ресурс стиля, который поставляет значения по умолчанию для представления. Может быть 0, чтобы не искать значения по умолчанию.
  • DefStyleRes Идентификатор ресурса ресурса стиля, который поставляет значения по умолчанию для представления, используется только в том случае, если defStyleAttr равен 0 или не может быть найден в теме. Может быть 0, чтобы не искать значения по умолчанию.