android在onclick中调用两个函数

时间:2017-04-28 08:46:12

标签: android

我试图在同一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");
        }
    }
});

3 个答案:

答案 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()方法调试并分类使您的代码保持不变的原因。