java - 如何获取 ScrollView 的每个 EditText 语音结果
问题描述
我有一个 ScrollView,它有大约 13 个 EditText。我要做的是将语音转换为文本,因此当用户触摸任何 EditText 并单击说话按钮并开始说话时,它将转换为该 EditText 的文本,当他再次触摸另一个 EditText 时,它将转换为该文本EditText 不更改以前的 EditText 等等。我使用了 for 循环,但在所有 13 个 EditText 中都找到了一个语音的结果。我还添加了一个 break 语句,但效果不佳。
public void onResults(Bundle bundle) {
//getting all the matches
ArrayList<String> matches = bundle
.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
if (matches != null) {
for (int j = 0; j < speEdtId.length; j++) {
eEdit = findViewById(speEdtId[j]);
if (speEdtId[j]==speEdtId[0]) {
eEdit.setText(matches.get(0));
} else if (speEdtId[j]==speEdtId[1]) {
eEdit.setText(matches.get(0));
} else if (speEdtId[j]==speEdtId[2]) {
eEdit.setText(matches.get(0));}
.
.
.
break;
}
}}
解决方案
您为每个 Edittext 设置相同的值。你可以做的是:
if (speEdtId[j]==speEdtId[0]) {
eEdit.setText(matches.get(0));
matches.clear();
}
并且还将标签设置为每个 Edittext 并在循环中使用标签查找。希望这可以帮助
推荐阅读
- python - 如何在 n 个位置后映射字母匹配
- angular - 如何降低浏览器的性能以测试重型角度应用程序以模拟低配置电脑?
- iframe - 尝试处理 iFrame 但收到此错误 'cypress-iframe 命令一次只能应用于一个 iframe。而是找到了 2'
- python - 无法从“sympy.vector”导入“参数区域”
- blazor-client-side - WASM Blazor 需要使用多少内存
- r - ggAcf() 如何处理多变量时间序列?
- php - 找不到类“JWT”
- angular - 将提供者范围限制为组件
- c# - 如果文本文件已经打开,如何避免异常
- c++ - C++ - 使用向量或链表?