0

1 つのアクティビティからいくつかの関数を呼び出す必要があります。しかし、それを行うと、null ポインターが返されます... エラーが発生します。これを例として使用してい ます 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();

それはうまくいかないのですか?ただし、MYCall() が TTA クラス内から呼び出されると機能します。

ご協力ありがとうございました。

4

2 に答える 2

2

調べるコードがあまり提供されていないため、何が起こっているのかを知るのは困難です。

アクティビティのライフサイクル メソッドでテキスト読み上げオブジェクトのセットアップを行っていますか? を使用してアクティビティをインスタンス化するだけでは、これらは呼び出されないためnew TTA()、Text-To-Speech オブジェクトがまだ正しく初期化されていない可能性があります。

ただし、複数の場所で使用するため、Text-To-Speech 関連のメソッドが特定のアクティビティと結合されないように、コードを再配置することをお勧めします。

于 2012-04-05T21:50:29.623 に答える
0

が呼び出されるまでspeak()、または呼び出すことはできません。tta.MYCall()onInit()

したがって、2 行のコードを実行しても、常に機能するとは限りません。

次のようなものが必要になるか、コードを再配置します。

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