首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从其他活动或服务中调用某个活动的函数?

如何从其他活动或服务中调用某个活动的函数?
EN

Stack Overflow用户
提问于 2012-04-06 00:29:43
回答 2查看 833关注 0票数 0

我需要从一个活动中调用一些函数。但是当我这样做的时候,它会给出空指针...错误。我以此为例,http://www.javacodegeeks.com/2010/09/android-text-to-speech-application.html

请参见第38行,上面写着tts.speak(文本,TextToSpeech.QUEUE_ADD,空);

所以,如果我像这样修改了代码...

代码语言:javascript
复制
public class TTA extends Activity implements OnInitListener {

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

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

... ... ...
}

然后把这称为我从另一个活动打来的电话,就像这样,

代码语言:javascript
复制
TTA tta = new TTA();
tta.MYCall();

它不应该起作用吗?但是,当从TTA类内部调用MYCall()时,它不起作用。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2012-04-06 05:50:30

很难判断发生了什么,因为您没有提供太多代码来检查。

您是否正在为活动生命周期方法中的文本到语音对象进行设置?如果您只是使用new TTA()实例化Activity,则不会调用这些函数,因此很可能您的文本到语音转换对象尚未正确初始化。

但是:我建议重新安排您的代码,使与文本到语音相关的方法不会与特定的活动耦合,因为您将在多个地方使用它。

票数 2
EN

Stack Overflow用户

发布于 2012-04-06 16:23:21

在调用onInit()之前,不能调用speak()tta.MYCall()

因此,运行两行代码不太可能一直有效。

你需要这样的东西,或者重新安排你的代码:

代码语言:javascript
复制
TTA tta = new TTA();
while (!tta.isInitialized())
{
  try
  {
  Thread.sleep(100);
  }
  catch (InterruptedException e)
  {}
}
tta.MYCall();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10032395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档