Я столкнулся с проблемой после обновления targetSdkVersion
и поддержки версий моих приложений для libs до Oreo (27).Проблема в том, что когда я запускаю свое приложение на Android 4, API 19, я получаю ошибку во время выполнения.Проблема в том, что он не может найти значение указанного атрибута.Вот код:
styles.xml:
<style name="CustomStyle" parent="OtherCustomStyle">
<item name="screenPrimaryColor">@color/primary</item>
<item name="screenPrimaryColorDark">@color/primaryDark</item>
</style>
<attr name="screenPrimaryColor" format="reference" />
<attr name="screenPrimaryColorDark" format="reference" />
activity_test.xml:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/CustomStyle">
<include layout="@layout/inner_test"/>
</FrameLayout>
inner_test.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/instant_sale_bottom_margin">
<!-- HEADER -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="?attr/screenPrimaryColor"
android:baselineAligned="false">
<!-- REST OF MY LAYOUT -->
</LinearLayout>
</LinearLayout>
AsВы можете видеть, что стиль применяется как тема в activity_test.xml
.Тем не менее, с этой комбинацией (поддержка lib 27 и Android 4.4) она не работает, и приложение вылетает при надувании макета.Сбой из-за android:background="?attr/screenPrimaryColor"
во включенном представлении.Это работало нормально, прежде чем я обновил библиотеки поддержки.Также это хорошо работает с новыми библиотеками поддержки на устройствах под управлением Android более новой версии, чем 4.
Я думаю, что это может быть ошибкой в библиотеке поддержки.Мой вопрос заключается в том, сталкивался ли кто-нибудь из вас с этой проблемой.
(Кстати, я нашел «решение», которое заключается в установке той же темы в включенном представлении (inner_test.xml
в моем случае).Однако это грязное решение, поскольку inner_test.xml
может быть повторно использовано в различных частях приложения.)