0

ここでこの質問に従おうとしました 文字列配列が各文字列をインクリメントします が、うまくいきませんでした。ボタンをクリックすると、文字列をインクリメントすることで TextToSpeech の音声が発する内容をインクリメントします。したがって、文字列 0 から開始し、次に 1 から 2 から 3 から 4 の ect でループ バックします。コードはこちら

文字列配列コード

            String [] speakLetters = { "Letter A for Ant", "Letter b for Bat", "Letter C for Cat" ....... , "Letter Z for zoo"};

配列はうまくレイアウトされていますが、インクリメントしようとすると機能しません。最初のものは単に ANT と表示され、インクリメントされないか、コードを変更するとフリーズします。

配列をインクリメントしようとするコード

                mNextBtn.setOnClickListener(new OnClickListener() {
                        int cIndex = 0;
                            int stringLength = speakLetters.length;
                            String speakNow = speakLetters[stringLength];
                            cIndex = (cIndex++); // I also tried here cIndex = (cIndex + 1) % stringLength;
                            tts.speak(speakNow, TextToSpeech.QUEUE_FLUSH, null);

                        mNextBtn.setEnabled(mSCanvas.isUndoable());
                        }

はい、これをスキャンバスに書き込んでいます。

私は何を間違っていますか?

4

1 に答える 1

0

クリック リスナー ブロックの外側で cIndex 変数をクラス メンバーとして宣言します。

int cIndex = 0;

次に、クリック ハンドラー コードを変更します。

mNextBtn.setOnClickListener(new OnClickListener() {
      String speakNow = speakLetters[cIndex];
      tts.speak(speakNow, TextToSpeech.QUEUE_FLUSH, null);

      cIndex++;
      cIndex %= speakLetters.length;

      mNextBtn.setEnabled(mSCanvas.isUndoable());
 });
于 2013-08-27T20:12:27.267 に答える