我试图在同一onClick
事件中调用两个函数。当我单击Button
时,只调用一个函数,第二次调用第二个函数时,我单击Button
。
btnSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
promptSpeechInput();
String result = txtSpeechInput.getText().toString();// Wrong emplacement // TODO: 23/04/2017
if (result.equals("call")) {
call("number");
}
}
});
答案 0 :(得分:2)
您正在发表演讲Dialog
,此时您的If
条件也会被调用但条件不满意,因此您的其他函数不会被调用。
将以下代码放在onActivityResult()
。
String result = txtSpeechInput.getText().toString();
if (result.equals("call")) {
call("number");
}
参考:http://www.androidhive.info/2014/07/android-speech-to-text-tutorial/
答案 1 :(得分:0)
尝试在调试模式下运行应用程序以找出问题。但我从代码中可以理解的是
promptSpeechInput();
该方法是可以提示用户说话然后从中提取文本的方法。所以肯定会在不同的线程上进行所有这些处理,因此当你的主线程刚刚启动promptSpeechInput()时,它需要一些时间来返回一些值。方法并移动到下一个语句,其中txtSpeechInput.getText()。toString();还没有任何文字,所以使你的If条件错误而不是调用你的函数。
如果我的想法是真的那么你需要调用这段代码: -
String result = txtSpeechInput.getText()。toString(); if(result.equals(" call")){
call("number");
}
在语音识别的回调中。如果不知道它是如何工作的,它应该是支持无法说明的。
调试代码将验证问题。
答案 2 :(得分:0)
可能的原因是因为当你的Onclick函数被调用时,第一个promptSpeechInput()
得到执行,并且该方法中的代码可能尚未结束,并且您希望同时调用该函数。但是只有在第一个函数完全执行后,nextfunction才会执行。
我建议只使用promptSpeechInput()
方法调试并分类使您的代码保持不变的原因。