私のアプリでは、フラグメントとビューページャーを使用しています。アクティビティを拡張するがレイアウトを持たない別のテキスト読み上げクラスがあります。FragmentAdapter クラスでこのクラスをインスタンス化しました。これは、現在画面上にあるアクティビティに応じて話す機能を呼び出します。ただし、テキスト読み上げコンストラクターが原因でアプリがクラッシュし、強制的に閉じられます。getApplicationContext() と className.this の両方を使用しましたが、テキストから音声へのコンストラクターの原因はコンテキストであることがわかりましたが、それでもアプリがクラッシュします。コードは次のとおりです。
public class textToSpeech extends Activity{
TextToSpeech tts=null;
public textToSpeech()
{
Log.d("text to speech", "constructor");
tts = new TextToSpeech(textToSpeech.this , new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
Log.d("text to speech", "init");
if(status != TextToSpeech.ERROR)
{
Log.d("text to speech", "condition");
tts.setPitch(1.1f);
tts.setSpeechRate(0.4f);
tts.setLanguage(Locale.US);
}
}
});
}
この問題を解決するために私を親切に案内してください。
startActivity() を使用してテキスト読み上げアクティビティを開始しましたが、テキスト読み上げクラスでメソッドを呼び出すと、まだ NullPointerException が発生します。(テキスト読み上げクラスをインスタンス化しました)
tts.SpeakText("hello world"); // in fragmentPagerAdapter exception class
テキスト読み上げクラスで
public void SpeakText (String text)
{
Log.d("text to speech", "speaking");
if(text!=null)
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
よろしく