Мои действия распространяются на общий базовый актив, где я объявляю и инициализирую общедоступные переменные, такие как context
типа Context, activity
типа Activity и mActionBar типа ActionBar
.Панель действий, панель инструментов, наследование активности
Таким образом, это позволяет избежать избыточного кода инициализации во всех действиях моего приложения.
Но с появлением Toolbar
, я немного смущен о том, как это сделать. Панель инструментов не похожа на ActionBar и заменяет ее, но также расширяет ее.
ActionBar - это объект вида, который всегда доступен для извлечения, действием ActionBar, и он находится над создаваемыми представлениями. Это нигде не объявляется в XML-формате.
Но панель инструментов объявлена только в макете XML, поэтому я должен включать ее во все создаваемые макеты, иначе я не смогу получить доступ к объекту панели инструментов.
Обычно я использую setContentView(R.layout.mylayout)
в методе onCreate
каждого отдельного вида деятельности. И затем я должен инициализировать объект панели инструментов после этого, используя findViewById
. Поэтому я не могу поместить этот код в свою функцию onCreate BaseActivity, потому что setContentView
еще не был бы инициализирован.
Даже если я создал панель инструментов программно с помощью своего конструктора и попытался добавить представление в начало иерархии, мне все равно придется делать это по макету по макету и по активности по активности, поскольку некоторые макеты RelativeLayout как корневой объект, а другие - разные. Таким образом, они все равно будут иметь отдельные кодовые соображения.
Причина, по которой мне любопытно, что мои действия наследуют панель инструментов, заключается в том, что для полного кошмара для Google внезапно требуется, чтобы устройства Android 4.0-4.4 использовали пакет совместимости v7, полностью заменили панель действий на Объект панели инструментов используйте фрагменты пакета совместимости v4 вместо собственных, все используют новейшие парадигмы дизайна.
«эй проверить V21! Но ваше v17 устройство должно использовать объекты v4 для проверки it out " – CQM
Вы можете установить представление содержимого с помощью Панели инструментов в базовом классе Activity и раздуть подклассы« Представления »в контейнер ViewGroup контейнера в базовом макете. –
@MikeM. Я чувствую, что это будет проблемой. Я также использую DrawerLayout NavigationDrawer, который появляется перед ToolBar и должен быть корневым элементом. В других случаях я также использую другие библиотеки, которые полагаются на корневой элемент. – CQM