Я хочу добиться этого в моем приложении:
Мой XML-код в упражнении выглядит примерно так:
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/toggleGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.google.android.material.button.MaterialButton
android:id="@+id/button1"
... />
<com.google.android.material.button.MaterialButton
android:id="@+id/button2"
... />
<com.google.android.material.button.MaterialButton
android:id="@+id/button3"
... />
</com.google.android.material.button.MaterialButtonToggleGroup>
Я перешел на androidx и использовал материалкомпоненты в моих стилях, но по какой-то причине я получаю ошибку во время выполнения, которая говорит:
Binary XML file: Error inflating class com.google.android.material.button.MaterialButtonToggleGroup
implementation "com.google.android.material:material:1.0.0"
Хотя, при использовании com.google.android.material.button.MaterialButton
без группы это будет работать отличноЭто означает, что я использую правильную реализацию стилей и gradle.
Я также пытаюсь сделать следующее:
- аннулирование кэша
- удаление и повторное импортирование обоих
androidx.appcompat:appcompat:1.1.0
и com.google.android.material:material:1.0.0
несколько раз - закрытие и повторное открытие Android Studio
- повторное импортирование проекта после его закрытия
- накачка minSdkVersion до 21 вместо 14 (целевые и скомпилированные версии SDK28)
Вот мои зависимости (на случай, если некоторые из них вызывают какие-то противоречия):
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
//Room Persistance Library
def room_version = "2.1.0"
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
//Lifecycle Libraries from the Android Architecture Components
def lifecyle_version = " 2.1.0"
implementation "android.arch.lifecycle:extensions:$lifecyle_version"
annotationProcessor "android.arch.lifecycle:compiler:$room_version"
//External Libraries:
implementation 'com.github.HITGIF:TextFieldBoxes:1.4.4'
implementation "com.google.android.material:material:1.0.0"
Вот стиль, который я использую для этогоактивность:
<style name="ThemeNewRoutine" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
ВотЭлемент активности в файле манифеста:
<activity
android:name=".Views.NewRoutine.NewRoutineActivity"
android:theme="@style/ThemeNewRoutine">
</activity>
Почему com.google.android.material.button.MaterialButton работает отлично, НО com.google.android.material.button.MaterialButtonToggleGroup - нет.
Кроме того, я обнаружил, что следующие атрибуты также не могут быть разрешены при их использовании в файле style.xml (даже если родительский объект - Theme.MaterialComponents.Light):
- colorPrimaryVariant
- colorOnPrimary
- colorSecondaryVariant
- colorOnSecondary
- colorOnError
- colorSurface
- colorOnSurface
Я не знаю, вызвало ли это какие-либо конфликты, но моя деятельность расширяет AppCompatActivity:
public class NewRoutineActivity extends AppCompatActivity