java - getText() 总是从动态创建的 Chip 组件返回空字符串?

标签 java android material-design android-chips

我正在尝试根据一些计算动态创建一些基于字符串 ArrayList 的选择芯片组件,以下是创建芯片并将它们添加到在布局 XML 文件中创建的 ChipGroup 的代码。

        if (mChipGroup.getChildCount() == 0 ){
            int i = 0;
            for (Classifier.Recognition res: results){
                Chip resultChip = new Chip(getDialog().getContext());
                ChipDrawable chipDrawable =
                        ChipDrawable.createFromAttributes(
                                getActivity(),
                                null,
                                0,
                                R.style.Widget_MaterialComponents_Chip_Choice);
                resultChip.setId(i++);
                resultChip.setChipDrawable(chipDrawable);
                resultChip.setText(res.getTitle());
                mChipGroup.addView(resultChip);
            }
        }

芯片与文本正确显示,但当我尝试在芯片上调用 getText() 时,它总是返回空字符串,但不返回芯片包含的文本。我通过在 ChipGroup 上设置 OnCheckedChangeListener 并使用文本制作 Toast 来测试这一点(尽管它没有起作用)。当我尝试仅显示 checkId 时,它起作用了。


        mChipGroup.setOnCheckedChangeListener(new ChipGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(ChipGroup group, int checkedId) {
                Chip chip = group.findViewById(checkedId);
                if(chip != null){
                    Toast.makeText(getContext(), chip.getText().toString(),Toast.LENGTH_SHORT).show();
                }
            }
        });

我当前的解决方法是使用一个变量来保存数组结果并使用ArrayList.get(selectedChipId.getTitle())。但我认为不应该这样

我还发现它能够从布局文件中添加的 Chips 获取文本,但不能从运行时添加的 Chips 获取文本。尝试过 1.1.0/alpha06 和 1.1.0/alpha07 版本,但没有运气。如果可能的话希望得到一些建议。非常感谢。

最佳答案

所以,根据 here 中的回答,这似乎是一个错误和 here 。当前的解决方法是改用 ((ChipDrawable)chip.getChipDrawable()).getText()

关于java - getText() 总是从动态创建的 Chip 组件返回空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56567028/

相关文章:

java - 将一个数组的内容传输到另一个数组

Java 编译器问题

css - Materialise Design 汉堡图标不显示

android - Material Design 和 appcompat 不适用于较旧的 API 版本

android - 如何将存储在字符串变量中的文本设置为粗体?

java - 如何在 cloudfoundry 或其他地方部署 appfuse?

java System.out 丢失

java - Set<String> 不保存所有数据?

android - 如何加快 APK 部署?

java - 在 openGL ES 2.0 中高效绘制图元