Почему getSupportActionBar
возвращает ноль?
Возможно, вы используете тему NoActionBar
, например Theme.AppCompat.Light.NoActionBar
,
Удалите часть NoActionBar
.
Как Theme.AppCompat.Light
или Theme.AppCompat.Light.DarkActionBar
Зачем использовать ActionBar вместо макета?
Причина 1
Создание пользовательского макета добавит много шаблонного кода.Actionbar
обычно поддерживается постоянным во всех действиях вашего приложения.Поэтому, если вы используете макет, то в конечном итоге вы добавите один и тот же код макета ко всем макетам ваших действий.(Даже если вы включаете макет с помощью тега <layout/>
, он по-прежнему не нужен код).
Причина 2
У вас будет action items
в вашем ActionBar
.Используя пользовательский макет, вы в конечном итоге будете вызывать findViewById
на этих action items
в каждом из ваших действий.findViewById
является дорогостоящей операцией.Так что это определенно повлияет на производительность вашего приложения (может быть, очень незначительным, но все же).Кроме того, это ненужный код, который нужно писать в каждом упражнении.