java - getText() 总是从动态创建的芯片组件返回空字符串?
问题描述
我正在尝试根据来自某些计算的字符串的 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 来测试这一点(尽管它不起作用)。当我尝试仅显示 checkedId 时,它可以工作。
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())
. 但不要认为它应该是那样的
我还发现它能够从布局文件中添加的芯片中获取文本,但不能从运行时添加的芯片中获取文本。尝试了 1.1.0/alpha06 和 1.1.0/alpha07 版本,但没有运气。如果可能的话,想得到一些建议。非常感谢你。
解决方案
推荐阅读
- c# - C# Mongo 序列化问题
- react-native - 如何在 React Native 中设置根视图的背景?
- php - 与整数中的 PHP 相比,如何在 Python 中使用逻辑运算符?
- java - Java 1.7。函数的实现
- php - codeigniter 4 - 找不到控制器或其方法
- jmeter - 使用 JMeter JSON Extractor 访问 JSON 数组值
- flutter - 我需要帮助在颤振中做 API
- google-cloud-platform - 重复的日志条目谷歌云在使用 python 的谷歌云功能中的堆栈驱动程序上登录
- excel - VBA Excel - 保存文件时无效的过程调用或参数
- django - 未指定时,Django 模型如何不强制执行必需的模型字段?