我需要从一个活动中调用一些函数。但是当我这样做时,它会给出空指针......错误。 我用它作为我的例子, http://www.javacodegeeks.com/2010/09/android-text-to-speech-application.html
请参阅第38行,tts.speak说明(text,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()时,它可以工作。
感谢您的帮助。
答案 0 :(得分:2)
很难说出发生了什么,因为你没有提供太多的代码来检查。
您是否正在为Activity生命周期方法中的文本转语音对象进行设置?如果您只是使用new TTA()
实例化活动,则不会调用这些内容,因此很可能您的Text-To-Speech对象尚未正确初始化。
但是:我建议重新安排你的代码,以便文本到语音相关的方法不与特定的Activity结合,因为你将在多个地方使用它。
答案 1 :(得分:0)
在调用speak()
之前,您无法致电tta.MYCall()
或onInit()
。
因此,运行两行代码不太可能一直有效。
您需要这样的内容或重新安排您的代码:
TTA tta = new TTA();
while (!tta.isInitialized())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{}
}
tta.MYCall();