Я новичок в Android и столкнулся с этой проблемой. Я получил MainActivity со списком элементов, когда по одному из них щелкают, запускается DetailActivity.
Я отключил ActionBar с помощью
<style name = "AppTheme" parent = "android:Theme.Material.Light.NoActionBar">
поэтому у MainActivity больше нет actionBar. Но мне нужен этот ActionBar в DetailActivity (мне нужен базовый, со стрелкой влево, чтобы вернуться в MainActivity), поэтому я создал другой стиль
<style name = "DetailTheme" parent = "android:Theme.Material.Light.DarkActionBar">
и использовал его в activity_detail.xml вот так
android:theme = "@style/DetailTheme"
Но кажется, что это неправильный путь, потому что в этой Activity нет ActionBar.
В настоящее время я не уверен, будет ли DetailActivity единственной с ActionBar, поэтому я хотел бы знать, как активировать ее только для этого действия. Какое для этого правильное решение?
Не уверен, но, возможно, попробуйте назначить его действию в манифесте
<activity android:name = ".DetailActivity"
android:theme = "@style/DetailTheme"/>
used it in activity_detail.xml like this
android:theme = "@style/DetailTheme"
Я предполагаю, что вы имеете в виду, что добавили атрибут android:theme к корневому тегу представления в вашем файле макета. Может быть, примерно так:
<RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:theme = "@style/DetailTheme"
...
/>
На самом деле это не применяет тему к вашему Деятельность, а только применяет тему к «представлению содержимого» вашего Activity. В представлениях содержимого нет панелей действий, поэтому эти атрибуты темы будут игнорироваться.
Чтобы применить тему к Activity, вы должны указать ее в AndroidManifest.xml.
<activity
android:name = ".DetailActivity"
android:theme = "@style/DetailTheme"/>
Да, спасибо за объяснение. Добавление темы в манифест помогло.