2012-08-26 16 views
2

我正在製作一個簡單的Android程序,用於訓練目的運行助記符或數學練習。 我有一個「新練習」按鈕,可以改變問題和答案。我想實現一個「文本到語音」模式,在這個模式下,軟件讀取問題和答案。在他們說完之後,它應該計算一個新的問題並重新開始。如何訪問TTS OnUtteranceCompleted回調中的佈局?

我正在使用OnUtterance完成來確定演講是否已結束。我的問題是,我無法從回調中訪問我的「新練習」按鈕。

我使用這個:

private TextToSpeech.OnUtteranceCompletedListener onUtteranceCompleted = new TextToSpeech.OnUtteranceCompletedListener() 
{ 
     @Override 
     public void onUtteranceCompleted(String utteranceId) 
     { 
       if(0 == utteranceId.compareToIgnoreCase(END_OF_SPEECH)) 
       { 
         Log.i("TTS","Completed"); 
         if (TTSMode == TTS_MODE_ON) { 
          //Start new 
          Log.i("TTS","TTS mode is on: start new exercize"); 
          NewExercize(); 
          btnNewEx.performClick(); 

         } 
       } 

     } 
}; 

我得到了以下錯誤: $ CalledFromWrongThreadException:只有創建視圖層次可以觸摸其觀點原來的線程。

我能夠生成新的問題/答案,但我不能使用按鈕來更改新問題或答案的字段,TTS引擎使用這些字段。

任何想法?

回答

3

您需要使用runOnUiThread

context.runOnUiThread(new Runnable() { 
    public void run() { 
     btnNewEx.performClick(); 
    } 
}); 

(你可以省略 「背景。」 如果 「這」 是一種活動或服務子類)

+0

完美!非常感謝你 – DavidTonarini