gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:33:07 25 4
gpt4 key购买 nike

我正在尝试根据一些计算动态创建一些基于字符串 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com