0

話してから入力を受け取り、その入力を使用してもう一度話そうとするこの関数があります。今の問題は、すべての発言を行い、入力を待たないことです

public void fun(){
  speakOut("what is your name");
  startActivityForResult(intent, 2);
  speakout("how old are you");

}

私のプログラムは上記の例に少し似ています。私がそれを実行すると、2番目の質問のみが行われ、アクティビティが実行されます(私の場合は、音声RECOGNIZE_SPEECHインテントです。したがって、実行する前にコードがアクティビティが終了するのを待つ必要があります。または、何かを持っていますか?違う?

編集:

わかりました。質問を単純化しすぎたようです = P 実際、アクティビティの後に複数の質問があります。私はそれらをループすることを計画しているので、次のようなものです:

for(int i=0;i<listOfQuestions.size;i++){
    speakOut(listOfQuestions.get(i));
    startActivityForResults(intent,2);
}

そのため、onActivityResult() で質問することはできません。そうでない限り、それが私がやっていることのために私ができる方法です

4

2 に答える 2

1

startActivityForResult() を使用して開始したアクティビティが終了したときに onActivityResult() を使用して通知を受ける方法を説明するこのチュートリアルを確認してください。

于 2013-10-01T12:29:33.903 に答える
0

アクティビティは別のプログラムのように開始されます (そのコマンドによって開始されたスレッドのように考えてください)。開始後、speakout 関数が呼び出され、インテントが読み込まれる前にすばやく処理されます。しかし、実際には、発言の前に意図がプロセスを開始しました。インテントの後にスピークアウトを呼び出したい場合は、

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == 2) {
        if (resultCode == RESULT_OK){
               do_something_with_data();
               speakout("how old are you");
          }
    }
}

アクティビティ文書から結果を取得するもお読みください。

于 2013-10-01T12:41:08.410 に答える