Не могу использовать MaterialButtonToggleGroup, хотя я могу использовать MaterialButton? - PullRequest
2 голосов
/ 02 октября 2019

Я хочу добиться этого в моем приложении: look

Мой 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
...