如何从其他Activity或服务调用一个Activity的功能?

时间:2012-04-05 16:29:43

标签: android class android-activity function-call

我需要从一个活动中调用一些函数。但是当我这样做时,它会给出空指针......错误。 我用它作为我的例子, 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()时,它可以工作。

感谢您的帮助。

2 个答案:

答案 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();