2012-08-05 71 views
1

我創建了一個TTS模塊。它在獨立的基礎上完美工作,但是當我嘗試將它作爲我的項目的類實現時,它會導致錯誤並拋出空指針異常。文本到語音 - 空指針異常

我計劃實現什麼:

1)讀取/ RES /原始文件夾中的文本文件。 2)通過TTS將文本文件轉換爲語音。字符串s通過BufferReader類捕獲了整個文件。

我已經使用了TTS的代碼 -

private TextToSpeech tts; 
tts.speak(s, TextToSpeech.QUEUE_FLUSH, null); 
Intent checkIntent = new Intent(); 
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
    startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); 

的錯誤出現在tts.speak .....線。我通過在整個代碼中添加log.d來發現這一行。上面的tts.speak代碼沒有記錄log.d。

請幫我調試問題。

感謝提前一噸。

回答

1

你已經證明聲明變量:

private TextToSpeech tts; 

...你已經使用變量顯示

tts.speak(s, TextToSpeech.QUEUE_FLUSH, null); 

...但你永遠初始化的變量?如果您未給它賦值,它將始終具有默認值null。通過this tutorial來看,你需要這樣的事(我假設你的代碼是在Activity):

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    tts = new TextToSpeech(this, this); 
    ... 
} 
+0

是的,你猜對了正確的,TTS正在實施一項活動。謝謝我沒有初始化變量。今天會嘗試。順便說一句,代碼在沒有初始化的情況下獨立工作。 – user1576339 2012-08-06 13:55:55

+0

謝謝。現在我不會得到異常,但引擎不會播放任何內容。 – user1576339 2012-08-06 17:00:03

+1

@ user1576339:你讀過我徹底鏈接過的教程嗎? (我不確定你的意思是「代碼在沒有初始化的情況下在獨立基礎上工作」 - 如果你在空引用上調用一個方法,你將會*得到一個異常......) – 2012-08-06 17:10:27