Я хочу установить параметры по ссылке. В моем случае, это цвет, который будет переключаться с помощью пользовательского приложения Theme
. Проблема в том, что в одном месте в моем коде он выбрасывает UnsupportedOperationException
, но в других местах он работает нормально. Я использую его в 50 разных местах, но только здесь, в этом макете, он не работает. Вероятно, проблема в том, что это макет, который надувается на LayoutInflater
.
Вот мое имя цвета в attr.xml
->
<attr name="bgColor" format="reference"/>
Вот использование в styles.xml
внутри моего пользовательского Theme
:
<style name="AppThemeBlueDark" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
...
<item name="bgColor">@color/darkred</item>
...
</style>
Здесьявляется использование этого ссылочного цвета в макете XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="52dp"
android:gravity="center"
android:background="?attr/bgColor">
...
Other Views
...
</LinearLayout>
Исключение:
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f030051 a=-1}
at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:946)
at android.content.res.TypedArray.getDrawable(TypedArray.java:930)
at android.view.View.<init>(View.java:5012)
at android.view.ViewGroup.<init>(ViewGroup.java:660)
at android.widget.LinearLayout.<init>(LinearLayout.java:244)
at android.widget.LinearLayout.<init>(LinearLayout.java:240)
at android.widget.LinearLayout.<init>(LinearLayout.java:236)