如何在同一个活动中多次调用onClick?

时间:2016-06-22 05:25:00

标签: android listview android-studio android-edittext speech-to-text

更新: 我正在创建一个应用,onClickListener用于将语音转换为文本,并将文本输入List View字段。同样,一旦输入,我想重新触发语音到文本选项,并将新文本输入到另一个List View字段,同时仍保留已填写的所有其他List View字段。

以下是Java文件的一部分,该文件使用我想要回答的各种语句调用speech to text选项。最初提示完全出现在下一个之后,这是完美的,但它并没有将每个文本分配给相应的编辑文本字段。它仅将语音记录到最后一个提示的文本中。现在在这个线程上有一些帮助我已经将代码更新为以下内容,其中checklv1等对应于唯一的整数:

   public void onClick(View v){
    Intent i1 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i1.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i1.putExtra(RecognizerIntent.EXTRA_PROMPT, "What is the current time?");
    startActivityForResult(i1, check);

    Intent i2 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i2.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i2.putExtra(RecognizerIntent.EXTRA_PROMPT, "Is the status Confirmed or Unconfirmed?");
    startActivityForResult(i2, checklv1);

    Intent i3 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i3.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i3.putExtra(RecognizerIntent.EXTRA_PROMPT, "What is the Temp?");
    startActivityForResult(i3, checklv2);
}

以下部分代码显示将文本分配到editText字段lv1lv2lv3

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == check && resultCode == RESULT_OK){
        ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        lv1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == checklv1 && resultCode == RESULT_OK){
        ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        lv2.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == checklv2 && resultCode == RESULT_OK){
        ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        lv3.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
    super.onActivityResult(requestCode, resultCode, data);
}

代码正在进行中,并将语音输入到每个list view字段中的文本短语。但我唯一的问题是lv3包含正确的词组,lv1也包含正确的词组,但lv2lv1的词组相同,而它应该是对应的词组到lv2。很可能在支票分配中有问题。

如果有人可以帮我解决上述代码中出错的地方,将非常感谢

1 个答案:

答案 0 :(得分:2)

您传递给check的{​​{1}}字段是您应该用来区分您正在执行的操作的字段。在此处传递3个不同的值,并在startActivityForResult中启用它们,以确定要更新的UI部分。

onActivityResult

startActivityForResult(i2, checkLv1);