2013-08-27 3 views
0

Я попытался ответить на этот вопрос здесь String array incrementing each string , но он не хотел работать, что им нужно делать, когда кнопка нажата, чтобы увеличить то, что голос TextToSpeech собирается сказать, увеличивая строку , поэтому начинайте с строки 0, затем от 1 до 2 - 3 до 4 экв и обходите назад. Heres кодTextToSpeech With String Array

Строкового массив Код

  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()); 
         } 

Да, я пишу это к scanvas я хотел включить, что просто упаковывают, что может быть проблема, хотя я сомневаюсь, что это.

Что я делаю неправильно?

+0

Как эта линия работает для вас: 'Строка speakNow = speakLetters [ stringLength]; '? Последний элемент массива будет находиться в 'speakLetters [stringLength-1]'. – Gloria

ответ

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()); 
}); 
+0

отлично работает –