2012-04-05 65 views
0

我需要從一個活動調用一些功能。但是當我這樣做時,它會給出空指針...錯誤。 我用這作爲我的榜樣, http://www.javacodegeeks.com/2010/09/android-text-to-speech-application.html如何從其他Activity或服務調用一個Activity的功能?

請參閱第38行,說tts.speak(文字,TextToSpeech.QUEUE_ADD,NULL);

所以,如果我改變了這樣的代碼...

public class TTA extends Activity implements OnInitListener { 

... ... ... ... 

public void MYCall() 
{ 
tts.speak(text, TextToSpeech.QUEUE_ADD, null); 
} 

... ... ... 
} 

,然後調用此我從另一個活動調用,這樣,

TTA tta = new TTA(); 
tta.MYCall(); 

不應該工作?它沒有,但是當從TTA類中調用MYCall()時,它起作用。

謝謝你的幫助。

回答

2

很難說出發生了什麼,因爲您沒有提供太多的代碼來檢查。

您是否正在爲Activity生命週期方法中的文本到語音對象進行設置?如果您僅使用new TTA()實例化活動,則這些不會被調用,所以很可能您的Text-To-Speech對象尚未正確初始化。

但是:我建議重新安排您的代碼,以便文本到語音相關的方法不與特定的活動相關聯,因爲您將在多個位置使用它。

0

您不能撥打speak()tta.MYCall(),直到調用onInit()

因此,運行你的兩行代碼不可能一直工作。

你需要像這樣或重新安排你的代碼:

TTA tta = new TTA(); 
while (!tta.isInitialized()) 
{ 
    try 
    { 
    Thread.sleep(100); 
    } 
    catch (InterruptedException e) 
    {} 
} 
tta.MYCall(); 
相關問題