Android材质-无法转换为com.google.Android.Material.chip.ChipGroup

Android材质-无法转换为com.google.Android.Material.chip.ChipGroup,android,kotlin,material-design,androidx,Android,Kotlin,Material Design,Androidx,我有一个component\u category\u view.xml,其中一个芯片组在一个constraintLayout中初始化,该constraintLayout具有一个idcategoryList, 我正在运行下面的CategoryView.kt类,对其进行充气并使用芯片动态更新,并将其放置在我的活动中 class CategoryView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null,

我有一个
component\u category\u view.xml
,其中一个芯片组在一个constraintLayout中初始化,该constraintLayout具有一个id
categoryList
, 我正在运行下面的
CategoryView.kt
类,对其进行充气并使用芯片动态更新,并将其放置在我的活动中

class CategoryView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {

init {
    inflateLayout()
}


private fun inflateLayout() {
    val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    inflater.inflate(R.layout.component_category_view, this, true)
}
fun updateCategories(categories: List<Category>){
    categories.forEach {
        var chipText = "${it.title.capitalize()} (${it.amount})"
        val chip = Chip(this@CategoryView.context)
        chip.text = chipText
        chip.isCheckable = true
        chip.chipBackgroundColor = null

        categoryList.addView(chip)
    }
}


}

使用Material主题代替appCompact解决芯片问题:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.Bridge">

<item name="colorAccent">@color/colorAccent</item>

</style>

<style name="AppTheme.NoActionBar">

<item name="windowActionBar">false</item>

<item name="windowNoTitle">true</item>

</style>


使用Material主题代替appCompact解决芯片问题:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.Bridge">

<item name="colorAccent">@color/colorAccent</item>

</style>

<style name="AppTheme.NoActionBar">

<item name="windowActionBar">false</item>

<item name="windowNoTitle">true</item>

</style>


在我的例子中,错误是由
Chip
视图中的
id
字段引起的

<com.google.android.material.chip.Chip
                android:id="@+id/chip_fragment_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>


更改
id
字段的值后,错误消失了。

在我的例子中,错误是由
芯片
视图中的
id
字段引起的

<com.google.android.material.chip.Chip
                android:id="@+id/chip_fragment_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>


更改
id
字段的值后,错误消失。

我的清单已经在使用material主题`android:theme=“@style/theme.MaterialComponents.Light.NoActionBar”`感谢您迄今为止的帮助,但categoryList是我的芯片组的名称,我已将xml添加到我的问题中,以便您可以看到它。因此,您的答案中唯一的变化是将新芯片的上下文(在我的例子中)设置为categoryList.context,同样的错误会发生,但在创建芯片的过程中,将其设置为“context”会导致同样的错误,但在芯片组之外也会发生,就像我的问题一样。如果我使用(val chip=chip(context)),则会发生在第71行(添加行)如果我使用(val chip=chip(categoryList.context))它出现在第34行(初始化行)那么你使用categoryList.context,哪一行是34当然行chip作为视图表明chip是CategoryView。仅使用chip我的清单已经使用了material-theme`android:theme=“@style/Theme.MaterialComponents.Light.NoActionBar”`感谢您迄今为止的帮助,但categoryList是我的芯片组的名称,我已将xml添加到我的问题中,以便您可以看到它。因此,您的答案中唯一的更改是设置新芯片的上下文(在我的情况下)对于categoryList.context,同样的错误会发生,但是在创建芯片的过程中,将其设置为“context”也会发生同样的错误,但是在添加到芯片组的过程中,就像我的问题一样。如果我使用(val chip=chip(context)),它会发生在第71行(添加行),如果我使用(val chip=chip(categoryList.context)),它会发生在第34行(初始化行)您使用categoryList.context,哪一行是34当然行chip,因为视图指示chip是CategoryView。只使用chip
<com.google.android.material.chip.Chip
                android:id="@+id/chip_fragment_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>