Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Как вернуть ActionBar в активити которое унаследовано от активити с темой Theme.AppCompat.NoActionBar?

#android #style


У меня есть много активити(да это ужас, но такой проект достался, и я его переделываю)
и  базовая которая наследует тему:


    


остальные активити наследуют базовую  

SubscriptionListActivity extends BaseActivity


и естественно в них нету ActionBar'а, что мне и нужно. Но среди них, есть одна активити,
которая его использует. В ней есть такой код как например:

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
...


Но так как она наследуется от базовой то getSupportActionBar() ворачевает  null
Я пробовал в манифесте написать просто:

android:theme="@style/Theme.AppCompat" для нее, но не помогло.


Вижу один выход - сделать Базовую от android:theme="@style/Theme.AppCompat"
а потом каждого ее ребенка прописывать без екшенбара. 

Вопрос- как мне все сделать красиво и правильно? и еще вопрос - может как то можно
просто убрать Title из Theme.AppCompat и не использовать тему Theme.AppCompat.NoActionBar?
    


Ответы

Ответ 1



В вашей ситуации, на той Activity, на которой вам требуется ActionBar, просто добавьте Toolbar. ActionBar уже устарел, и вместо него рекомендуется использовать как раз Toolbar. Он появится даже с вашей базовой темой (даже больше, при его использовании обязательно надо прописывать тему NoActionBar). Исчерпывающие туториалы по использованию Toolbar вы найдёте здесь или тут, на русском.

Ответ 2



Вы можете просто добавить ActionBar c помощью класса Toolbar (есть в Appcompat Support Library) в разметку активити и далее в коде её найти и назначить в качестве ActionBar: Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar);

Комментариев нет:

Отправить комментарий