Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 此组件要求您指定有效的TextAppearance属性_Java_Android_Material Components_Material Components Android_Android Chips - Fatal编程技术网

Java 此组件要求您指定有效的TextAppearance属性

Java 此组件要求您指定有效的TextAppearance属性,java,android,material-components,material-components-android,android-chips,Java,Android,Material Components,Material Components Android,Android Chips,我的应用程序主题从AppCompat扩展而来,但我想动态使用芯片,但当我动态添加芯片时,应用程序会崩溃 This component requires that you specify a valid TextAppearance attribute. Update your app theme to inherit from Theme.MaterialComponents (or a descendant). 但当我将应用程序主题扩展到材质时,应用程序不会崩溃,过滤芯片工作正常,但我的问题

我的应用程序主题从AppCompat扩展而来,但我想动态使用芯片,但当我动态添加芯片时,应用程序会崩溃

This component requires that you specify a valid TextAppearance attribute. Update your app theme to inherit from Theme.MaterialComponents (or a descendant).
但当我将应用程序主题扩展到材质时,应用程序不会崩溃,过滤芯片工作正常,但我的问题是我不想从材质扩展主题,因为它会影响我的应用程序UI,在这种情况下,我如何使用芯片

编辑: 使用桥接,它可以避免崩溃,但当我点击芯片时,它不会改变我被点击的芯片的外观

Chip chip = new Chip(getContext());
        ChipDrawable chipDrawable = ChipDrawable.createFromAttributes(getContext(), null, 0, R.style.Widget_MaterialComponents_Chip_Filter);
        chip.setChipDrawable(chipDrawable);
        chip.setCheckable(true);
        chip.setText(itemArrayList.get(i).getName());
        binding.rvReport.addView(chip);

谢谢

您可以仅为继承自
主题的特定芯片指定主题。MaterialComponents
,而无需修改应用程序范围内的AppCompat主题:


您可以检查:

应用程序主题应继承自材质组件主题
如果无法更改主题,可以执行以下操作之一:

  • 从我们的一个材质组件继承
  • 继续从继承,并向主题添加一些新的主题属性
对于芯片,您还可以定义如下布局:


然后使用以下代码:

芯片=
(芯片)GetLayoutFlater()。充气(R.layout.single_Chip_layout,芯片组,false);
//...
芯片组.addView(芯片);

问题是,我想创建动态芯片IP(parent.context,null,R.style.Theme\u MaterialComponents)不起作用应用程序崩溃Hingi尝试了这两种方法,但也避免了崩溃,但芯片过滤器在这种情况下无法按预期工作。i、 e当我点击芯片时,它没有效果,没有可绘制的更改,请参阅编辑的问题我应该包括芯片可绘制吗?由于我的应用程序正在崩溃,如果我像您提到的那样创建chip对象,那么使用构造函数创建的过滤器芯片在某种程度上不能像预期的那样与桥接主题一起工作(不会命中OnCheckdChangedListener)。您需要使用xml文件对其进行充气。只有这样,您才能捕获支票更改。然而,我仍然不知道为什么它会以这种方式工作。