我需要从一个活动中调用一些函数。但是当我这样做的时候,它会给出空指针...错误。我以此为例,http://www.javacodegeeks.com/2010/09/android-text-to-speech-application.html
请参见第38行,上面写着tts.speak(文本,TextToSpeech.QUEUE_ADD,空);
所以,如果我像这样修改了代码...
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()时,它不起作用。
谢谢你的帮助。
发布于 2012-04-06 05:50:30
很难判断发生了什么,因为您没有提供太多代码来检查。
您是否正在为活动生命周期方法中的文本到语音对象进行设置?如果您只是使用new TTA()实例化Activity,则不会调用这些函数,因此很可能您的文本到语音转换对象尚未正确初始化。
但是:我建议重新安排您的代码,使与文本到语音相关的方法不会与特定的活动耦合,因为您将在多个地方使用它。
发布于 2012-04-06 16:23:21
在调用onInit()之前,不能调用speak()或tta.MYCall()。
因此,运行两行代码不太可能一直有效。
你需要这样的东西,或者重新安排你的代码:
TTA tta = new TTA();
while (!tta.isInitialized())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{}
}
tta.MYCall();https://stackoverflow.com/questions/10032395
复制相似问题