0

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

谢谢您的帮助。

4

2 回答 2

2

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

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

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

于 2012-04-05T21:50:29.623 回答
0

You cannot call speak() or tta.MYCall() until onInit() is called.

Therefore, running your two lines of code is not likely to work all the time.

You need something like this or re-arrange your code:

TTA tta = new TTA();
while (!tta.isInitialized())
{
  try
  {
  Thread.sleep(100);
  }
  catch (InterruptedException e)
  {}
}
tta.MYCall();
于 2012-04-06T08:23:21.213 回答